我想使用setter来设置stackpanel中所有元素的默认边距,而不仅仅是按钮,还包括文本框和标签.
<StackPanel>
<StackPanel.Resources>
<Style TargetType="{x:Type Button}">
<Setter Property="Margin" Value="0,10,0,0"/>
</Style>
</StackPanel.Resources>
...
Run Code Online (Sandbox Code Playgroud)
当我尝试将上面的Button更改为Control或FrameworkElement(每个元素的派生类型)时,它不起作用.
如何解决这个问题,而不必指定2个Style具有相同内容但不同x的不同元素:TargetType上的类型?
您可以通过Style的BasedOn属性继承来执行此操作:
<StackPanel.Resources>
<Style x:Key="BaseStyle" TargetType="{x:Type FrameworkElement}">
<Setter Property="Margin" Value="0,10,0,0"/>
</Style>
<Style TargetType="{x:Type Label}" BasedOn="{StaticResource BaseStyle}" />
<Style TargetType="{x:Type TextBox}" BasedOn="{StaticResource BaseStyle}" />
<Style TargetType="{x:Type Button}" BasedOn="{StaticResource BaseStyle}" />
</StackPanel.Resources>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3819 次 |
| 最近记录: |