【愚公系列】2023年02月 .NET CORE工具案例-MahApps.Metro基于WPF的UI控件库
2023-06-13 09:17:28 时间
文章目录
前言
MahApps.Metro是一个用于开发Windows应用程序的开源.NET库,它可以提供一种简单的方式来为WPF应用程序添加丰富的用户界面元素。
MahApps.Metro官方文档:https://mahapps.com/docs/
MahApps.Metro源码网址:https://github.com/MahApps/MahApps.Metro
一、MahApps.Metro基于WPF的UI控件库
1.安装包
MahApps.Metro
2.添加资源
在app.xaml中添加资源
<!-- MahApps.Metro resource dictionaries. Make sure that all file names are Case Sensitive! -->
<ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Controls.xaml" />
<ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Fonts.xaml" />
<!-- Theme setting -->
<ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Themes/Light.Blue.xaml" />
3.主视图改造
主视图的cs文件需要继承MetroWindow
public partial class StartView : MetroWindow
{
public StartView()
{
InitializeComponent();
}
}
<mah:MetroWindow x:Class="WpfApp8.StartView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:mah="clr-namespace:MahApps.Metro.Controls;assembly=MahApps.Metro"
xmlns:cal="http://www.caliburnproject.org"
xmlns:local="clr-namespace:WpfApp8"
mc:Ignorable="d"
GlowBrush="{DynamicResource MahApps.Brushes.Accent}"
ResizeMode="CanResizeWithGrip"
Title="StartView" Height="300" Width="600" WindowStartupLocation="CenterScreen">
<StackPanel>
<TextBox Name="TextContent"/>
<Button x:Name="testBtn" Content="testBtn" Background="LightCyan"/>
<ListBox Name="ListBoxItems" MinHeight="230" Background="LightGray"
cal:Message.Attach="[Event SelectionChanged] = [Action ListBoxItems_SelectionChanged($source,$eventArgs)];
[Event MouseUp]=[ListBoxItems_MouseUp($source,$eventArgs)]" />
</StackPanel>
</mah:MetroWindow>
4.视图的数据源
因为使用的是cm框架,相关数据代码如下:
class StartViewModel : Screen
{
public StartViewModel()
{
ListBoxItems = new ObservableCollection<string>() { };
ListBoxItems.Add("愚公一号");
ListBoxItems.Add("愚公二号");
ListBoxItems.Add("愚公三号");
}
public ObservableCollection<string> ListBoxItems { get; set; }
public string TextContent { get; set; }
public void testBtn()
{
TextContent = "hello world!";
NotifyOfPropertyChange(()=> TextContent);
}
public void ListBoxItems_MouseUp(object sender, MouseButtonEventArgs e)
{
ListBox listbox = sender as ListBox;
MessageBox.Show("当前操作的控件名称是:"+ listbox.Name);
}
public void ListBoxItems_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
TextContent = (sender as ListBox).SelectedItem.ToString();
NotifyOfPropertyChange("TextContent");
}
}
5.运行程序
可以看到三个主题控件都显示出来了
相关文章
- [ASP.net]web.config的customErrors与httpErrors的区别
- RadControls for ASP.NET Ajax 笔记(2)[通俗易懂]
- .net 温故知新:【9】.NET日志记录 ILogger使用和原理
- 宝塔面板Linux系统通过Docker部署VB.NET Asp.Net Core WebAPI应用
- 【愚公系列】2023年01月 .NET CORE工具案例-DeveloperSharp的使用(数据库)
- 【愚公系列】2023年01月 .NET CORE工具案例-RedLock.net实现分布式锁
- 【愚公系列】2023年02月 .NET CORE工具案例-办公文档神器Toxy的使用
- Go-标准库-net(二)
- ASP.NET Core1.0 带来的新特性详解编程语言
- .NET访问MySQL:简单实用的方法(.net访问mysql)
- VB.NET构建多层数据库应用:使用MSSQL(vb.net mssql)
- 基于NET技术的Oracle信息服务(.net用oracle)
- NET与Oracle结合出现新的可能(.net oracle)
- 面向企业的Net框架开发与Oracle集成(net框架oracle)
- CMySQL与NET技术融会贯通(c mysql .net)
- Net环境下MySQL数据库驱动的研究与应用(.net的mysql驱动)
- 探索Oracle中NET位置的背后秘密(oracle中net位置)
- 使用Oracle64位Net突破技术极限(oracle64位net)
- asp.net下利用JS实现对后台CS代码的调用方法
- asp.net分页sql语句(结合aspnetpager)
- 比较完整的asp.net学习流程
- Jquery组合form元素为json格式,asp.net反序列化
- ASP.Net执行cmd命令的实现代码
- 答你所问.NET小常识方便学习asp.net的朋友
- ASP.NET中实现jQueryValidation-Engine的Ajax验证
- 让Win2008+IIS7+ASP.NET支持10万并发请求