我有很多TextBox
个控件,我正在尝试编写一个样式清除文本属性当控件禁用时。
我不希望代码中有事件处理程序。
我写了这个:
<Style TargetType="{x:Type TextBox}">
<Style.Triggers>
<Trigger Property="IsEnabled" Value="False">
<Setter Property="Text" Value="{x:Null}" />
</Trigger>
</Style.Triggers>
</Style>
问题是如果TextBox定义如下:
<TextBox Text={Binding Whatever} />
然后触发器不起作用(可能是因为它受到约束) 如何克服这个问题?
答案 0 :(得分:15)
因为您在TextBox中明确设置了Text,所以样式的触发器无法覆盖它。试试这个:
<TextBox>
<TextBox.Style>
<Style TargetType="{x:Type TextBox}">
<Setter Property="Text" Value="{Binding Whatever}" />
<Style.Triggers>
<Trigger Property="IsEnabled" Value="False">
<Setter Property="Text" Value="{x:Null}" />
</Trigger>
</Style.Triggers>
</Style>
</TextBox.Style>
</TextBox>