Триггер текстового поля WPF для очистки текста

у меня много TextBox элементы управления, и я пытаюсь написать стиль, который очищает текст свойства , когда управление отключен. Я не хочу иметь обработчики событий в коде позади.

Я написал:

<Style TargetType="{x:Type TextBox}">                            
 <Style.Triggers>
  <Trigger Property="IsEnabled" Value="False">                                    
   <Setter Property="Text" Value="{x:Null}" />
  </Trigger>                                
 </Style.Triggers>
</Style>

проблема в том, что если поле определено как:

<TextBox Text={Binding Whatever} />

тогда триггер не работает (возможно, потому, что он связан) Как преодолеть эту проблему?

1 ответов


поскольку вы явно устанавливаете текст в текстовом поле, триггер стиля не может перезаписать его. Попробуйте это:

<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>