赞
踩
MaterialDesignXamlToolkit(Version 4.0.0)
一、Installing the Toolkit
安装MaterialDesignThemes
可以在NuGet中搜索安装:
二、Configuring your App.xaml
和任何其他XAML库一样,都需要通过App.xaml导入才能正常使用,首先需要导入控件的所有默认样式,无论选择三种样式中的哪一种,这都是必需的。
<prism:PrismApplication
x:Class="PrismBlankAppCore.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:PrismBlankAppCore"
xmlns:prism="http://prismlibrary.com/">
<Application.Resources>
<ResourceDictionary Source="pack://application:,,,/MaterialDesignThemes.Wpf;component/Themes/MaterialDesignTheme.Defaults.xaml" />
</Application.Resources>
</prism:PrismApplication>
接下来,需要选择一个颜色主题。最简单的选择是使用bunledtheme资源字典提供的内置主题之一。
<prism:PrismApplication x:Class="PrismBlankAppCore.App" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:local="clr-namespace:PrismBlankAppCore" xmlns:materialDesign="http://materialdesigninxaml.net/winfx/xaml/themes" xmlns:prism="http://prismlibrary.com/"> <Application.Resources> <ResourceDictionary> <ResourceDictionary.MergedDictionaries> <materialDesign:BundledTheme BaseTheme="Light" PrimaryColor="DeepPurple" SecondaryColor="Lime" /> <ResourceDictionary Source="pack://application:,,,/MaterialDesignThemes.Wpf;component/Themes/MaterialDesignTheme.Defaults.xaml" /> </ResourceDictionary.MergedDictionaries> </ResourceDictionary> </Application.Resources> </prism:PrismApplication>
如果喜欢为主题自定义颜色,那么可以使用CustomColorTheme:
<prism:PrismApplication x:Class="PrismBlankAppCore.App" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:local="clr-namespace:PrismBlankAppCore" xmlns:materialDesign="http://materialdesigninxaml.net/winfx/xaml/themes" xmlns:prism="http://prismlibrary.com/"> <Application.Resources> <ResourceDictionary> <ResourceDictionary.MergedDictionaries> <materialDesign:CustomColorTheme BaseTheme="Dark" PrimaryColor="Gray" SecondaryColor="Gray" /> <ResourceDictionary Source="pack://application:,,,/MaterialDesignThemes.Wpf;component/Themes/MaterialDesignTheme.Defaults.xaml" /> </ResourceDictionary.MergedDictionaries> </ResourceDictionary> </Application.Resources> </prism:PrismApplication>
三、Configuring your Windows
<Window [...]
xmlns:materialDesign="http://materialdesigninxaml.net/winfx/xaml/themes"
TextElement.Foreground="{DynamicResource MaterialDesignBody}"
Background="{DynamicResource MaterialDesignPaper}"
TextElement.FontWeight="Medium"
TextElement.FontSize="14"
FontFamily="{materialDesign:MaterialDesignFont}"
[...] >
四、示例
<Window x:Class="PrismBlankAppCore.Views.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:materialDesign="http://materialdesigninxaml.net/winfx/xaml/themes" xmlns:prism="http://prismlibrary.com/" Title="{Binding Title}" Background="{DynamicResource MaterialDesignPaper}" FontFamily="{materialDesign:MaterialDesignFont}" TextElement.FontSize="14" TextElement.FontWeight="Medium" TextElement.Foreground="{DynamicResource MaterialDesignBody}"> <Grid> <Grid.RowDefinitions> <RowDefinition Height="auto" /> <RowDefinition Height="auto" /> <RowDefinition Height="auto" /> <RowDefinition Height="auto" /> <RowDefinition Height="auto" /> </Grid.RowDefinitions> <StackPanel Grid.Row="0" Margin="10" Orientation="Horizontal"> <Button Width="100" Height="30" Margin="40,0,40,0" Command="{Binding NavigationCmd}" CommandParameter="ViewA" Style="{StaticResource MaterialDesignOutlinedButton}"> <materialDesign:PackIcon Kind="Connection" /> </Button> <Button Width="100" Height="30" Margin="40,0,40,0" Command="{Binding NavigationCmd}" CommandParameter="ViewB" Style="{StaticResource MaterialDesignFlatButton}"> <materialDesign:PackIcon Kind="Connection" /> </Button> <Button Width="100" Height="30" Margin="40,0,40,0" Command="{Binding OpenDialogCmd}" Content="OpenDialog" /> </StackPanel> <StackPanel Grid.Row="1" Margin="10" Orientation="Horizontal"> <StackPanel Margin="2" Orientation="Horizontal"> <RadioButton Margin="4" Content="FIRST" IsChecked="True" Style="{StaticResource MaterialDesignTabRadioButton}" /> <RadioButton Margin="4" Content="SECOND" IsChecked="False" Style="{StaticResource MaterialDesignTabRadioButton}" /> <RadioButton Margin="4" Content="THIRD" IsChecked="False" IsEnabled="True" Style="{StaticResource MaterialDesignTabRadioButton}" /> </StackPanel> <materialDesign:ColorZone Mode="PrimaryMid"> <StackPanel Margin="2" Orientation="Vertical"> <RadioButton Margin="4" Content="FIRST" IsChecked="True" Style="{StaticResource MaterialDesignTabRadioButton}" /> <RadioButton Margin="4" Content="SECOND" IsChecked="False" Style="{StaticResource MaterialDesignTabRadioButton}" /> <RadioButton Margin="4" Content="THIRD" IsChecked="False" IsEnabled="False" Style="{StaticResource MaterialDesignTabRadioButton}" /> </StackPanel> </materialDesign:ColorZone> </StackPanel> <StackPanel Grid.Row="2" Margin="10" Orientation="Horizontal"> <!-- the following based on https://material.io/guidelines/components/buttons.html#buttons-toggle-buttons --> <ListBox SelectedIndex="0" Style="{StaticResource MaterialDesignToolToggleListBox}"> <ListBoxItem Content="{materialDesign:PackIcon Kind=FormatAlignLeft}" /> <ListBoxItem Content="{materialDesign:PackIcon Kind=FormatAlignCenter}" /> <ListBoxItem Content="{materialDesign:PackIcon Kind=FormatAlignRight}" /> <ListBoxItem Content="{materialDesign:PackIcon Kind=FormatAlignJustify}" /> </ListBox> <ListBox SelectedIndex="0" Style="{StaticResource MaterialDesignToolVerticalToggleListBox}"> <ListBoxItem Content="{materialDesign:PackIcon Kind=FormatAlignLeft}" /> <ListBoxItem Content="{materialDesign:PackIcon Kind=FormatAlignCenter}" /> <ListBoxItem Content="{materialDesign:PackIcon Kind=FormatAlignRight}" /> <ListBoxItem Content="{materialDesign:PackIcon Kind=FormatAlignJustify}" /> </ListBox> </StackPanel> <StackPanel Grid.Row="3" Margin="10" Orientation="Horizontal"> <ProgressBar IsIndeterminate="True" Style="{StaticResource MaterialDesignCircularProgressBar}" Value="35" /> <ProgressBar Width="200" Margin="10" IsIndeterminate="True" /> </StackPanel> <StackPanel Grid.Row="4" Margin="10" Orientation="Horizontal"> <ComboBox MinWidth="128" materialDesign:ColorZoneAssist.Mode="Inverted" materialDesign:HintAssist.HelperText="Select one OS" materialDesign:HintAssist.Hint="OS" materialDesign:TextFieldAssist.HasClearButton="True" materialDesign:TextFieldAssist.SuffixText="sw" materialDesign:TextFieldAssist.UnderlineBrush="{DynamicResource SecondaryHueMidBrush}" Style="{StaticResource MaterialDesignFloatingHintComboBox}"> <ComboBoxItem Content="Android" /> <ComboBoxItem Content="iOS" /> <ComboBoxItem Content="Linux" /> <ComboBoxItem Content="Windows" /> </ComboBox> <ComboBox Width="256" materialDesign:HintAssist.Hint="Validation test" materialDesign:TextFieldAssist.HasClearButton="True" ItemsSource="{Binding ShortStringList}" Style="{StaticResource MaterialDesignOutlinedComboBox}"> <ComboBox.SelectedItem> <Binding Mode="TwoWay" Path="SelectedValidationOutlined" UpdateSourceTrigger="PropertyChanged" /> </ComboBox.SelectedItem> </ComboBox> </StackPanel> </Grid> </Window>
<ToggleButton Width="100"> <ToggleButton.Style> <Style BasedOn="{StaticResource MaterialDesignOutlinedButton}" TargetType="ToggleButton"> <Style.Triggers> <Trigger Property="IsChecked" Value="True"> <Setter Property="Content"> <Setter.Value> <materialDesign:PackIcon Width="auto" Height="auto" Kind="LanDisconnect" /> </Setter.Value> </Setter> <Setter Property="Foreground" Value="{StaticResource MaterialDesignDarkForeground}"/> </Trigger> <Trigger Property="IsChecked" Value="False"> <Setter Property="Content"> <Setter.Value> <materialDesign:PackIcon Width="auto" Height="auto" Kind="LanConnect" /> </Setter.Value> </Setter> </Trigger> </Style.Triggers> </Style> </ToggleButton.Style> </ToggleButton>
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。