WPF metro扁平化UI控件库:MahApps.Metro

点点圈 提交于 2019-12-09 03:59:14

MahApps.Metro 的使用小结。
最近项目中接触到一款metro扁平化样式UI控件库,非常值得推荐。写下这篇博客,希望在总结中能不断提高。同时希望能为读者提供一些帮助~

一,链接

官方示例地址
官方控件示例地址
github项目地址


二,安装

  1. 通过NuGet GUI(右键单击您的项目,点击NuGet包管理中,选择在线和搜索MahApps.Metro)
  2. 包管理器控制台:
    PM> Install-Package MahApps.Metro

三,实现Metro样式

1,XAML窗体中进行xmlns引用

xmlns:controls="clr-namespace:MahApps.Metro.Controls;assembly=MahApps.Metro"

2,对Window标签进行替换

 <controls:MetroWindow ...

3,修改窗体cs代码中的继承

    //引用
    using MahApps.Metro.Controls;

    namespace MetroWPF
    {
        /// <summary>
        /// MainWindow.xaml 的交互逻辑
        /// </summary>
        public partial class MainWindow : MetroWindow
        {
            public MainWindow()
            {
                InitializeComponent();
            }
        }
    }

4,使用内置的样式App.xaml

<Application x:Class="MetroWPF.App"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             StartupUri="MainWindow.xaml">
    <Application.Resources>
        <ResourceDictionary>
            <ResourceDictionary.MergedDictionaries>
                <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" />
            </ResourceDictionary.MergedDictionaries>
        </ResourceDictionary>
    </Application.Resources>
</Application>

WPF默认样式

Metro样式

这样我们就可以实现基本的Metro风格的界面啦。同时抛砖引玉,实现复杂一些的样式。


四,主题的修改

        /// <summary>
        /// 设置窗口标题和背景样式
        /// </summary>
        /// <param name="accentName">窗口标题栏样式</param>
        /// <param name="themeName">背景样式</param>
        private void ChangeTheme(string accentName, string themeName)
        {
            Accent expectedAccent = ThemeManager.Accents.First(x => x.Name == accentName); //"Blue"
            AppTheme expectedTheme = ThemeManager.GetAppTheme(themeName);  //"BaseDark"
            ThemeManager.ChangeAppStyle(Application.Current, expectedAccent, expectedTheme);
        }

五,控件样式修改

MahApps.Metro可以通过许多内置的样式对控件进行样式修改
举个栗子:
左边:默认按钮样式
右边:圆形按钮样式,按钮中加入Style属性:
Style=”{DynamicResource MetroCircleButtonStyle}”

按钮样式对比
更多丰富的样式地址可以在官方的示例中找到,这里就不一一列举了~


六,弹出消息窗口

this.ShowMessageAsync("标题", "内容", MessageDialogStyle.Affirmative, new MetroDialogSettings() { AffirmativeButtonText = "确定" });

四个参数分别为标题、内容、按钮类型、按钮的名称。
弹出消息


本文参考博客:王旭

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!