WPF TextBox触发器清除文本

PaN*_*1Me 10 wpf text triggers textbox

我有很多TextBox控件,我正在尝试编写一个样式,禁用 Control 清除Text属性.我不希望代码中有事件处理程序.

我写了这个:

<Style TargetType="{x:Type TextBox}">                            
 <Style.Triggers>
  <Trigger Property="IsEnabled" Value="False">                                    
   <Setter Property="Text" Value="{x:Null}" />
  </Trigger>                                
 </Style.Triggers>
</Style>
Run Code Online (Sandbox Code Playgroud)

问题是如果TextBox定义如下:

<TextBox Text={Binding Whatever} />
Run Code Online (Sandbox Code Playgroud)

然后触发器不起作用(可能是因为它的约束)如何克服这个问题?

Mat*_*ton 16

因为您在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>
Run Code Online (Sandbox Code Playgroud)