引用地址:https://www.cnblogs.com/zwh1993/p/13164482.html
WPF在使用样式的时候一般都是 Style="{StaticResource styleKey}",这里只能填一个样式,那么如何引用多个样式呢?
方法一:使用BaseOn
注意:
1.BaseOn所引用的样式一定要写在引用者的前面才有效;
2.所引用的样式的TargetType不能与引用者的TargetType不一致,但如果两者所应用的控件类型就是不一致怎么办,可在所引用的样式写Property时标注控件类型,例如行3-7中标注的TextBlock.
(而如果想不限定控件类型,使样式通用:不标注TargetType,在Property中标注Control.即可,例如<Setter Property="Control.FontSize" Value="26"/>)
<!--导航栏按钮文字 - 选中后样式-->
<Style x:Key="NavBtnPressedFontStyle">
<Setter Property="TextBlock.HorizontalAlignment" Value="Center"/>
<Setter Property="TextBlock.VerticalAlignment" Value="Center"/>
<Setter Property="TextBlock.FontFamily" Value="Microsoft Yahei"/>
<Setter Property="TextBlock.FontSize" Value="26"/>
<Setter Property="TextBlock.Foreground" Value="#ffffff"/>
</Style>
<!--左导航栏按钮 - 选中后样式-->
<Style x:Key="LeftNavBtnPressedStyle" TargetType="{x:Type Button}" BasedOn="{StaticResource NavBtnPressedFontStyle}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type Button}">
<Grid>
<Path x:Name="path" Data="M450,100 L400,50 550,50 600,100 z" Stretch="Fill" StrokeThickness="0" >
<Path.Fill>
<LinearGradientBrush StartPoint="0,0" EndPoint="1,1">
<GradientStop Color="#7000f5ff" Offset="0"/>
<GradientStop Color="#6000f5ff" Offset="0.1"/>
<GradientStop Color="#5000f5ff" Offset="0.2"/>
<GradientStop Color="#4000f5ff" Offset="0.3"/>
<GradientStop Color="#3000f5ff" Offset="0.4"/>
<GradientStop Color="#3000f5ff" Offset="0.6"/>
<GradientStop Color="#4000f5ff" Offset="0.7"/>
<GradientStop Color="#5000f5ff" Offset="0.8"/>
<GradientStop Color="#6000f5ff" Offset="0.9"/>
<GradientStop Color="#7000f5ff" Offset="1"/>
</LinearGradientBrush>
</Path.Fill>
</Path>
<ContentPresenter x:Name="content" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" RecognizesAccessKey="True"
SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/>
</Grid>
<ControlTemplate.Triggers>
<Trigger Property="IsFocused" Value="True"/>
<Trigger Property="IsDefaulted" Value="True"/>
<Trigger Property="IsMouseOver" Value="True"/>
<Trigger Property="IsPressed" Value="True"/>
<Trigger Property="IsEnabled" Value="False"/>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
方法二:使用WpfMultiStyle
1.在Nuget搜索安装;
2.在xaml页面引用;
3.在控件中同时使用多个样式,写法类似于 HTML 中 class="class1 class2 class3",非常方便。