2010-03-10 3 views
1

Salut je suis en train d'écrire un DataTrigger dans lequel je dois effacer un contenu sur la case code zone de texte checked.My est donné ci-dessousDataTrigger sur zone de texte ne fonctionne pas

Il fonctionne aussi longtemps que vous ne tapez rien dans la zone de texte .AS dès que type i dans la zone de texte de la DataTrigger ne parvient pas à work.How puis-je résoudre ce

<Window x:Class="CheckboxTextbox.Window1" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    Title="Window1" Height="300" Width="300"> 
    <Window.Resources> 
     <Style x:Key="cbStyle" TargetType="{x:Type TextBox}"> 
      <Style.Triggers> 
       <DataTrigger Binding="{Binding ElementName=Chk,Path=IsChecked}" Value="True"> 
        <Setter Property="Text" Value="{x:Null}"/> 
       </DataTrigger> 
      </Style.Triggers> 
     </Style> 
    </Window.Resources> 
    <StackPanel> 
     <CheckBox Name="Chk" Content="test"/> 
     <TextBox Style="{StaticResource cbStyle}"> 

     </TextBox> 
    </StackPanel> 
</Window> 

Répondre

3

Contrairement à une animation qui peut « tenir » une propriété de dépendance à une valeur spécifiée, une fois la fin de l'animation, un des ensembles de DataTrigger la propriété target, puis est effectuée jusqu'à ce que la propriété source change. En d'autres termes, dans votre exemple si vous mettez du texte dans la zone de texte, puis cochez la case, le texte sera effacé. Mais si vous recommencez à taper dans la zone de texte, DataTrigger ne fera rien jusqu'à ce que la case à cocher change à nouveau. C'est pourquoi lorsque vous décochez et re-cochez la case, le texte est effacé à nouveau.

Donc, ce que vous voulez faire est dans votre DataTrigger, définissez la propriété IsReadOnly de la zone de texte sur true. Cela vous empêchera de taper dans la boîte pendant que le DataTrigger est actif.

<DataTrigger Binding="{Binding ElementName=Chk,Path=IsChecked}" Value="True"> 
    <Setter Property="Text" Value="{x:Null}"/> 
    <Setter Property="IsReadOnly" Value="True"/> 
</DataTrigger> 
Questions connexes