前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【愚公系列】2023年02月 .NET CORE工具案例-MahApps.Metro基于WPF的UI控件库

【愚公系列】2023年02月 .NET CORE工具案例-MahApps.Metro基于WPF的UI控件库

作者头像
愚公搬代码
发布2023-03-16 17:23:10
5850
发布2023-03-16 17:23:10
举报
文章被收录于专栏:历史专栏

文章目录


前言

MahApps.Metro是一个用于开发Windows应用程序的开源.NET库,它可以提供一种简单的方式来为WPF应用程序添加丰富的用户界面元素。

MahApps.Metro官方文档:https://mahapps.com/docs/

在这里插入图片描述
在这里插入图片描述

MahApps.Metro源码网址:https://github.com/MahApps/MahApps.Metro

在这里插入图片描述
在这里插入图片描述

一、MahApps.Metro基于WPF的UI控件库

1.安装包

代码语言:javascript
复制
MahApps.Metro
在这里插入图片描述
在这里插入图片描述

2.添加资源

在app.xaml中添加资源

代码语言:javascript
复制
<!-- 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

代码语言:javascript
复制
public partial class StartView : MetroWindow
{
    public StartView()
    {
        InitializeComponent();
    }
}
在这里插入图片描述
在这里插入图片描述
代码语言:javascript
复制
<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框架,相关数据代码如下:

代码语言:javascript
复制
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.运行程序

在这里插入图片描述
在这里插入图片描述

可以看到三个主题控件都显示出来了

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-02-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 文章目录
  • 前言
  • 一、MahApps.Metro基于WPF的UI控件库
    • 1.安装包
      • 2.添加资源
        • 3.主视图改造
          • 4.视图的数据源
            • 5.运行程序
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档