【WPF】-MahApps创建属于自己的自定义主题
一、查看官方文档 https://mahapps.com/docs/themes/thememanager
按照官方文档,基本可以完成自定义主题。
但是所有的颜色需要自己按照https://github.com/MahApps/MahApps.Metro/blob/develop/src/MahApps.Metro/Styles/Themes/Theme.Template.xaml这个模板填充,岂不是会累死人。
二、本文介绍一下比较省事的方法
1.下载MahApps.Metro的源码,编译通过
2.在文件夹MahApps.Metro\Styles\Themes下有一个GeneratorParameters.json文件
View Code
看出规律了吧,你只需要加上自己的即可,如:
{
"Name": "MyColor",
"Values": {
"MahApps.Colors.AccentBase": "#FF825A2C",
"MahApps.Colors.Accent": "#CC825A2C",
"MahApps.Colors.Accent2": "#99825A2C",
"MahApps.Colors.Accent3": "#66825A2C",
"MahApps.Colors.Accent4": "#33825A2C",
"MahApps.Colors.Highlight": "#FF604220"
}
},
3.然后重新编译源码,你会发现MahApps.Metro\Styles\Themes多了你自定义的主题。
4.这个时候,你拿个这个编译完成的dll去引用,那么你的工程就可以使用你自定义的主题。
5.但是,这不是最佳方法,下面介绍还是安装nuget包的方法进行自定义主题。
6.打开你的工程,安装MahApps.Metro包
7.把上面3过程生成的主题拷贝到你的工程一个文件夹下,可能有很多个主题,用一个文件清单加入
View Code
8.最后一步:程序加载主题
StreamReader reader = new StreamReader(Application.GetResourceStream(new Uri("pack://application:,,,/AIStudio.Resource;component/Brushs/brush.json", UriKind.RelativeOrAbsolute)).Stream); string text = reader.ReadToEnd(); var dic = JsonConvert.DeserializeObject<Dictionary<string, string[]>>(text); foreach (var brush in dic.Values.SelectMany(p => p)) { ThemeManager.Current.AddLibraryTheme(new LibraryTheme(new Uri(brush), MahAppsLibraryThemeProvider.DefaultInstance)); }
📢博客主页:https://www.cnblogs.com/VisionCodeBlog
📢本文由 VisionCode原创,首发于 博客园,转载请注明原文链接:https://www.cnblogs.com/VisionCodeBlog/p/18020450🙉
📢欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正!
📢版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
📢技术进步源于分享与交流✨