到目前为止,我使用<Style.Triggers>
andDataTrigger
是为了根据条件将不同的样式属性应用于项目(在本例中为 TextBox)。
但现在我想根据条件DataTrigger
将Style
属性设置为我在别处定义的静态资源。
如果我使用 TextBox.Triggers 我得到一个错误,我不能在其中使用 DataTriggers 只是 EventTriggers 这不是我想要的。
我应该如何处理?
至少对于我的情况,似乎已经通过样式继承找到了合适的解决方案。如果我这样定义样式
在下面的代码ReadOnlyTextBox
中是我默认拥有的样式,并且基于我重写的我的一个属性上的 Datatrigger InEditMode
- 撤消它的一些默认样式属性,例如<Setter Property="IsReadOnly" Value="True" />
在默认ReadOnlyTextBox
样式中设置的
<TextBox.Style>
<Style BasedOn="{StaticResource ReadOnlyTextBox}" TargetType="{x:Type TextBox}">
<Style.Triggers>
<DataTrigger Binding="{Binding InEditMode}" Value="True">
<Setter Property="IsReadOnly" Value="False" />
<Setter Property="Background" Value="{DynamicResource {x:Static SystemColors.WindowBrushKey}}"/>
<Setter Property="BorderThickness" Value="1"/>
<Setter Property="Focusable" Value="True"/>
<Setter Property="IsReadOnlyCaretVisible" Value="True"/>
<Setter Property="KeyboardNavigation.IsTabStop" Value="True"/>
</DataTrigger>
</Style.Triggers>
</Style>
</TextBox.Style>