天天看点

WPF随笔(一)--UI框架MahApps.Metro的使用写在前面WPF的界面特性如何使用MahApps.Metro如何使用MahApps.Metro模板后记

WPF随笔(一)--UI框架MahApps.Metro的使用

  • 写在前面
  • WPF的界面特性
  • 如何使用MahApps.Metro
  • 如何使用MahApps.Metro模板
  • 后记

写在前面

使用WPF开发窗体程序有段时间了,这个随笔系列将会记录本人在WPF使用过程中的点点滴滴。

WPF的界面特性

相比较WinForm而言,WPF的界面呈现使用了基于标签的XMAL文件,具备更好的结构化、层次化特性,可以实现很多有趣的UI呈现效果。在市面上有很多优秀的UI库,MahApps.Metro就是其中之一。MahApps.Metro是一款Metro分隔的开源框架,下面分别是浅色和深色主题的示例:

WPF随笔(一)--UI框架MahApps.Metro的使用写在前面WPF的界面特性如何使用MahApps.Metro如何使用MahApps.Metro模板后记
WPF随笔(一)--UI框架MahApps.Metro的使用写在前面WPF的界面特性如何使用MahApps.Metro如何使用MahApps.Metro模板后记

如何使用MahApps.Metro

首先创建一个WPF项目,随便写几个控件,先来看看WPF的默认样式。

WPF随笔(一)--UI框架MahApps.Metro的使用写在前面WPF的界面特性如何使用MahApps.Metro如何使用MahApps.Metro模板后记

在项目上右键选择“管理NuGet程序包”,打开NuGet管理器,搜索并安装MahApps.Metro。

WPF随笔(一)--UI框架MahApps.Metro的使用写在前面WPF的界面特性如何使用MahApps.Metro如何使用MahApps.Metro模板后记

打开文件App.xaml,添加MappApps.Metro相关的资源字典。

<Application x:Class="WPFDemo.App"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:local="clr-namespace:WPFDemo"
             StartupUri="MainWindow.xaml">
    <Application.Resources>
        <ResourceDictionary>
            <ResourceDictionary.MergedDictionaries>
                <!--MahApps.Metro-->
                <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Controls.xaml" />
                <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Fonts.xaml" />
                <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Colors.xaml" />
                <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Accents/Blue.xaml" />
                <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Accents/BaseLight.xaml" />
                <!--MahApps.Metro-->
            </ResourceDictionary.MergedDictionaries>
        </ResourceDictionary>
    </Application.Resources>
</Application>
           

修改完成后,重新生成并运行程序就会发现窗体内部的控件样式已经发生了改变。

WPF随笔(一)--UI框架MahApps.Metro的使用写在前面WPF的界面特性如何使用MahApps.Metro如何使用MahApps.Metro模板后记

但是窗体的样式还是默认样式,要如何修改呢?

打开文件MainWindow.xaml,在文件头部添加MahApps.Metro的引用。

WPF随笔(一)--UI框架MahApps.Metro的使用写在前面WPF的界面特性如何使用MahApps.Metro如何使用MahApps.Metro模板后记

打开文件MainWindow.xaml.cs,在文件头部添加MahApps.Metro.Controls的引用,同时将MainWindow的基类改为MetroWindow。

WPF随笔(一)--UI框架MahApps.Metro的使用写在前面WPF的界面特性如何使用MahApps.Metro如何使用MahApps.Metro模板后记

相应的MainWindow.xaml文件中,Window的基类也进行修改。

WPF随笔(一)--UI框架MahApps.Metro的使用写在前面WPF的界面特性如何使用MahApps.Metro如何使用MahApps.Metro模板后记

保存后重新编译运行,就会看到窗体的样式已经发生改变,完全变成了Metro风格。

WPF随笔(一)--UI框架MahApps.Metro的使用写在前面WPF的界面特性如何使用MahApps.Metro如何使用MahApps.Metro模板后记

如何使用MahApps.Metro模板

上面的过程说明了如何在WPF项目中使用MahApps.Metro框架,但步骤有点繁琐,有没有更快捷的方法呢?幸运的是,MahApps.Metro提供了快捷的项目模板。模板可以在GitHub的源码包中找到,地址如下:

MahApps.Metro/Visual Studio Templates

下载模板后解压并复制到Visual Studio安装目录,C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE。重新启动VS,新建项目时可以看到在项目类型列表中多了一个“WPF MahApps.Metro Application(.NET45)”的选项。

WPF随笔(一)--UI框架MahApps.Metro的使用写在前面WPF的界面特性如何使用MahApps.Metro如何使用MahApps.Metro模板后记

点击确定即可直接创建默认样式为Metro风格的WPF项目。

注意:官方源码提供的模板引用的MahApps.Metro类库是低版本的,可以使用NuGet管理器更新到最新版本

后记

MahApps.Metro界面库有很多有趣的控件和样式,比如LeftCommand、RightCommand、Flyout,可以慢慢探索。除了MahApps.Metro,还有DevExpress、MUI之类的UI库。DevExpress是付费的,有更多更丰富的控件,规模较大的项目可以考虑使用;MUI也是一款免费的UI库,但已经很久没有更新了。

继续阅读