MahApps.Metro样式
2014-09-11 14:20
225 查看
http://mahapps.com/guides/styles.html
How to change the current theme... via App.xaml
How to change the current theme... via ThemeManager
How to change the current theme... On a Window different to your Application's MainPage
Creating Custom Accents and Themes
All of
"Red", "Green", "Blue", "Purple", "Orange", "Lime", "Emerald", "Teal", "Cyan", "Cobalt", "Indigo", "Violet", "Pink", "Magenta", "Crimson", "Amber", "Yellow", "Brown", "Olive", "Steel", "Mauve", "Taupe", "Sienna"
and these themes:
"BaseLight", "BaseDark"
You can also do this with the ThemeManager, like so:
In order to use this custom accent, you need to add it to the
It is also possible to create an accent resource dictionary dynamically by using a specific color.
Styles
Table of Contents
OverviewHow to change the current theme... via App.xaml
How to change the current theme... via ThemeManager
How to change the current theme... On a Window different to your Application's MainPage
Creating Custom Accents and Themes
Overview
This guide will introduce you to the many accents and themes thatMahApps.Metrohas and how to create your own.
All of
MahApps.Metro's accents and themes are contained within separate resource dictionaries (Make sure that all file names are spelled correct. They are Case Sensitive!).
How to change the current theme
You can choose between these available accents:"Red", "Green", "Blue", "Purple", "Orange", "Lime", "Emerald", "Teal", "Cyan", "Cobalt", "Indigo", "Violet", "Pink", "Magenta", "Crimson", "Amber", "Yellow", "Brown", "Olive", "Steel", "Mauve", "Taupe", "Sienna"
and these themes:
"BaseLight", "BaseDark"
via App.xaml
The fastest way is to specify the accent and theme resource in App.xaml.<Application x:Class="MahAppsMetroThemesSample.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" /> <!-- accent resource --> <!-- change "Cobalt" to the accent color you want --> <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Accents/Cobalt.xaml" /> <!-- theme resource --> <!-- change "BaseLight" to the theme you want --> <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Accents/BaseLight.xaml" /> </ResourceDictionary.MergedDictionaries> </ResourceDictionary> </Application.Resources> </Application>
via ThemeManager
MahApps.Metrohas a
ThemeManagermethod that lets you change the accent and theme using the code-behind file. It can be done in 2 lines, like so:
public partial class App : Application { protected override void OnStartup (StartupEventArgs e) { // get the theme from the current application var theme = ThemeManager.DetectAppStyle(Application.Current); // now set the Green accent and dark theme ThemeManager.ChangeAppStyle(Application.Current, ThemeManager.GetAccent("Green"), ThemeManager.GetAppTheme("BaseDark")); base.OnStartup(e); } }
On a Window different to your Application's MainPage
WithMahApps.Metroyou can have a different accent and theme for a
MetroWindow. The main window or any other
MetroWindowwill keep the specified accent and theme in the App.xaml.
<Controls:MetroWindow.Resources> <ResourceDictionary> <ResourceDictionary.MergedDictionaries> <!-- this window should be blue --> <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Accents/Blue.xaml" /> <!-- and should use the light theme --> <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Accents/BaseLight.xaml" /> </ResourceDictionary.MergedDictionaries> </ResourceDictionary> </Controls:MetroWindow.Resources>
You can also do this with the ThemeManager, like so:
public partial class AccentStyleWindow : MetroWindow { public void ChangeAppStyle() { // get the theme from the window var theme = ThemeManager.DetectAppStyle(this); // now set the Red accent and dark theme ThemeManager.ChangeAppStyle(this, ThemeManager.GetAccent("Red"), ThemeManager.GetAppTheme("BaseDark")); } }
Creating Custom Accents and Themes
Another nice feature ofMahApps.Metro
ThemeManageris to use custom created accents and themes or use a dynamically created accent and theme.
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> <!--ACCENT COLORS--> <Color x:Key="HighlightColor">#FF9F0055</Color> <!--80%--> <Color x:Key="AccentColor">#CCD80073</Color> <!--60%--> <Color x:Key="AccentColor2">#99D80073</Color> <!--40%--> <Color x:Key="AccentColor3">#66D80073</Color> <!--20%--> <Color x:Key="AccentColor4">#33D80073</Color> <!-- re-set brushes too --> <SolidColorBrush x:Key="HighlightBrush" Color="{StaticResource HighlightColor}" /> <SolidColorBrush x:Key="AccentColorBrush" Color="{StaticResource AccentColor}"/> <SolidColorBrush x:Key="AccentColorBrush2" Color="{StaticResource AccentColor2}"/> <SolidColorBrush x:Key="AccentColorBrush3" Color="{StaticResource AccentColor3}"/> <SolidColorBrush x:Key="AccentColorBrush4" Color="{StaticResource AccentColor4}"/> <SolidColorBrush x:Key="WindowTitleColorBrush" Color="{StaticResource AccentColor}" /> <SolidColorBrush x:Key="AccentSelectedColorBrush" Color="White" /> <LinearGradientBrush x:Key="ProgressBrush" EndPoint="0.001,0.5" StartPoint="1.002,0.5"> <GradientStop Color="{StaticResource HighlightColor}" Offset="0" /> <GradientStop Color="{StaticResource AccentColor3}" Offset="1" /> </LinearGradientBrush> <SolidColorBrush x:Key="CheckmarkFill" Color="{StaticResource AccentColor}" /> <SolidColorBrush x:Key="RightArrowFill" Color="{StaticResource AccentColor}" /> <Color x:Key="IdealForegroundColor">White</Color> <SolidColorBrush x:Key="IdealForegroundColorBrush" Color="{StaticResource IdealForegroundColor}"/> </ResourceDictionary>
In order to use this custom accent, you need to add it to the
ThemeManagerfirst.
public partial class App : Application { protected override void OnStartup(StartupEventArgs e) { // add custom accent and theme resource dictionaries ThemeManager.AddAccent("CustomAccent1", new Uri("pack://application:,,,/MahAppsMetroThemesSample;component/CustomAccents/CustomAccent1.xaml")); // get the theme from the current application var theme = ThemeManager.DetectAppStyle(Application.Current); // now use the custom accent ThemeManager.ChangeAppStyle(Application.Current, ThemeManager.GetAccent("CustomAccent1"), theme.Item1); base.OnStartup(e); } }
It is also possible to create an accent resource dictionary dynamically by using a specific color.
相关文章推荐
- WPF Mahapps.Metro 设置主题样式
- 【mahapps.metro】使用如何添加WPF窗体图标
- WPF 使用MahApps.Metro UI库
- Windows8 Metro 设计与开发-vs11风格样式
- 使用Metro Studio制作Metro样式图标
- MahApps.Metro之选项卡
- 一个Metro风格的开源项目 MahApps.Metro
- MahApps.Metro使用
- AvalonDock 2.0+Caliburn.Micro+MahApps.Metro实现Metro风格插件式系统(一)
- AvalonDock 2.0+Caliburn.Micro+MahApps.Metro实现Metro风格插件式系统(菜单篇)
- 使用Mahapps.Metro的DataGrid控件在载入大量数据卡死的问题
- WPF:Metro样式ProgressBar(圆点横向移动),自适应宽度
- 潜移默化学会WPF(样式篇)---改造CheckBox,全新metro风格
- 一个Metro风格的开源项目 MahApps.Metro
- 了解如何构建 Metro 样式的应用程序
- 分享一款基于Windows Phone 7的Metro样式的Silverlight主题
- AvalonDock 2.0+Caliburn.Micro+MahApps.Metro实现Metro风格插件式系统(二)
- 【mahapps.metro】WPF“关于”窗体
- 网站配色、网站模板网址 UE样式 metro报表