我有很多TextBox控件,我试图编写一个样式,当禁用控件时清除Text属性.
我不想在代码背后有事件处理程序.
我不想在代码背后有事件处理程序.
我写道:
<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} />
那么触发器不起作用(可能是因为它被绑定)
如何克服这个问题?
解决方法
因为您明确地设置TextBox中的文本,样式的触发器不能覆盖它.尝试这个:
<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>