如何使用数据触发器来应用不同的样式属性
本文关键字:样式 属性 应用 何使用 数据 触发器 | 更新日期: 2023-09-27 17:56:33
到目前为止,我使用<Style.Triggers>
和DataTrigger
,以便根据条件将不同的样式属性应用于项目(在本例中为TextBox)。
但是现在我想根据DataTrigger
的条件将Style
属性设置为我在其他地方定义的静态资源。
如果我使用 TextBox.Triggers,我会收到一个错误,我不能在其中使用数据触发器,只是 EventTriggers,这不是我想要的。
我应该如何处理?
似乎
至少在我的情况下已经通过样式继承找到了适当的解决方案。如果我这样定义样式
在下面的代码中,ReadOnlyTextBox
是我通过defult拥有的样式,并且基于Datatrigger在我的一个属性上InEditMode
重写 - 撤消它的一些默认样式属性,例如在默认ReadOnlyTextBox
样式中设置的<Setter Property="IsReadOnly" Value="True" />
<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>