MahApps.Metro样式

http://mahapps.com/guides/styles.html

 

Styles

Table of Contents

Overview

This guide will introduce you to the many accents and themes that MahApps.Metro has 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> 

Cobalt and BaseLight theme.

via ThemeManager

MahApps.Metro has a ThemeManager method 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

With MahApps.Metro you can have a different accent and theme for a MetroWindow. The main window or any other MetroWindow will 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 of MahApps.Metro ThemeManager is 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 ThemeManager first.

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.

转载于:https://www.cnblogs.com/fenix/p/4494471.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值