WPF样式

样式

由System.Windows.Style类表示。

<StackPanel>
    <StackPanel.Resources>
        <Style x:Key="ButtonStyle">
            <Setter Property="Button.FontSize" Value="22"/>
            <Setter Property="Button.Background" Value="Purple"/>
            <Setter Property="Button.RenderTransformOrigin" Value=".5,.5"/>
        </Style>
        <!-- 继承ButtonStyle -->
        <Style x:Key="ButtonStyle2" BasedOn="{StaticResource ButtonStyle}">
            <Setter Property="Button.FontWeight" Value="Bold"/>
        </Style>
    </StackPanel.Resources>
        
    <Button Style="{StaticResource ButtonStyle}">1</Button>
    <Button Style="{StaticResource ButtonStyle2}">2</Button>
</StackPanel>

共享Style

<StackPanel>
<StackPanel.Resources>
    <Style x:Key="ButtonStyle">
        <Setter Property="Control.FontSize" Value="22"/>
        <Setter Property="Control.Background" Value="Purple"/>
        <Setter Property="Control.RenderTransformOrigin" Value=".5,.5"/>
        <!-- 只对存在的属性进行设置,不存在则忽略 -->
        <Setter Property="Button.ClickMode" Value="Press"/>
    </Style>
    <!-- 继承ButtonStyle -->
    <Style x:Key="ButtonStyle2" BasedOn="{StaticResource ButtonStyle}">
        <Setter Property="Control.FontWeight" Value="Bold"/>
    </Style>
</StackPanel.Resources>
        
<Button Style="{StaticResource ButtonStyle}">1</Button>
<Button Style="{StaticResource ButtonStyle2}">2</Button>
<TextBox Style="{StaticResource ButtonStyle2}" >TextBox</TextBox>

限制Style使用

让Style应用到一个特定类型上,设置TargetType属性。

<StackPanel.Resources>
    <Style x:Key="LblStyle" TargetType="{x:Type Label}">
        <Setter Property="Background" Value="Olive"/>
    </Style>
</StackPanel.Resources>

<!-- 用到非Label对象上将报错 -->
<Label Style="{StaticResource LblStyle}">Label</Label>

创建隐式Style

设置Style的TargetType还有另一功能,忽略key属性,该Style隐式应用到所有目标类型元素。

其实有一隐式设置的键名,即为TargetType,因此同一TargetType只可有一个隐式Style,否则报错。

<StackPanel.Resources>      
    <!-- 不显示添加key -->
    <Style TargetType="{x:Type Label}">
        <Setter Property="Background" Value="Olive"/>
    </Style>
</StackPanel.Resources>

<Label>Label</Label>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值