通用样式targettype
本文关键字:targettype 样式 | 更新日期: 2023-09-27 18:20:36
我有一个在多个类型的控件(TextBox和Xceed的LongUpDown/DoubleUpDown)之间共享的通用样式。
样式是命名的(或键控的?),我不希望它自动应用于目标类型的所有控件。
我不知道哪一个是最接近所有这些控件的基本类型,所以我想我可以尝试将TargetType设置为UIElement,但VS似乎无法识别。
如何将TargetType设置为UIElement
样式:
<Style TargetType="TextBox" x:Key="TextFieldEntry">
<Setter Property="Background" Value="AliceBlue" />
<Style.Triggers>
<DataTrigger Binding="{Binding Path=IsDirty}" Value="True">
<Setter Property="BorderBrush">
<Setter.Value>
<SolidColorBrush Color="#FFF9D74B" />
</Setter.Value>
</Setter>
</DataTrigger>
<DataTrigger Binding="{Binding Path=IsDirty}" Value="False">
<Setter Property="BorderBrush">
<Setter.Value>
<SolidColorBrush Color="#FF98F329" />
</Setter.Value>
</Setter>
</DataTrigger>
</Style.Triggers>
</Style>
控制:
Style="{StaticResource ResourceKey=TextFieldEntry}"
您可以将TargetType
设置为UIElement
,但它不起作用,因为样式中使用的BorderBrush
和Background
属性都在System.Windows.Controls.Control
类上定义。而不在CCD_ 6上。
因此,您只需要将TargetType
设置为Control
即可使其工作:
<Style TargetType="Control" x:Key="TextFieldEntry">
<Setter Property="Background" Value="AliceBlue" />
<Style.Triggers>
<DataTrigger Binding="{Binding Path=IsDirty}" Value="True">
<Setter Property="BorderBrush">
<Setter.Value>
<SolidColorBrush Color="#FFF9D74B" />
</Setter.Value>
</Setter>
</DataTrigger>
<DataTrigger Binding="{Binding Path=IsDirty}" Value="False">
<Setter Property="BorderBrush">
<Setter.Value>
<SolidColorBrush Color="#FF98F329" />
</Setter.Value>
</Setter>
</DataTrigger>
</Style.Triggers>
</Style>