WPF style的继承

第一种方式:瞄准控件的基类

如下例所示,继承ContentControl的控件,都可以使用这个Style

<Window.Resources>
    <Style x:Key="ContentControlStyle" TargetType="ContentControl">
        <Setter Property="Background" Value="Pink"></Setter>
        <Setter Property="FontSize" Value="12"></Setter>
    </Style>
</Window.Resources>
<Grid>
    <Grid.RowDefinitions>
        <RowDefinition Height="*"></RowDefinition>
        <RowDefinition Height="*"></RowDefinition>
    </Grid.RowDefinitions>
    <Label Style="{StaticResource ContentControlStyle}" Content="按钮和文本框使用了基于ContentControl的Style"></Label>
    <Button Style="{StaticResource ContentControlStyle}" Content="按钮" Grid.Row="1"></Button>
</Grid>

第二种方式:继承

<Window.Resources>
    <Style x:Key="baseStyle" TargetType="Button">
        <Setter Property="Background" Value="Pink"></Setter>
        <Setter Property="FontSize" Value="12"></Setter>
    </Style>
    <Style x:Key="childStyle" TargetType="Button" BasedOn="{StaticResource baseStyle}">
        <Setter Property="FontSize" Value="50"></Setter>
    </Style>
</Window.Resources>
<Grid>
    <Button Style="{StaticResource childStyle}" Content="按钮"></Button>
</Grid>

就近原则:父类子类同时设定属性,调用子类,以子类为准

示例代码

https://github.com/zLulus/NotePractice/tree/dev3/WPF/WpfDemo/Style 的StyleInheritDemo和StyleInheritDemo2

原文地址:https://www.cnblogs.com/Lulus/p/8157364.html