2013-05-15 2 views
0

Je veux implémenter un DataTrigger pour dire, textBox1. Lorsque Text à l'intérieur de textBox1 est "ABC" alors je veux afficher "Data matched!" dans un autre TextBox dire, textBox2. J'ai écrit ci-dessous le code xaml pour cela mais ça ne fonctionne pas. Je reçois le message d'erreur ci-dessous.DataTriggers: Comment cela fonctionne

'Text' member is not valid because it does not have a qualifying type name 

code XAML pour cela est:

<Window x:Class="ControlTemplateDemo.Animation" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:sys="clr-namespace:System;assembly=mscorlib" 
    Title="Animation" Height="300" Width="607"> 
<Grid> 
    <Border Background="White"> 
     <StackPanel Margin="30" HorizontalAlignment="Left" Width="500" Height="209"> 
      <TextBox Name="textBox1">           
       <TextBox.Triggers> 
        <DataTrigger Binding="{Binding Path=Text}"> 
         <DataTrigger.Value> 
          <sys:String>ABC</sys:String> 
         </DataTrigger.Value> 
         <Setter TargetName="textBox2" Property="Text" Value="Data matched!"/>        
        </DataTrigger> 
       </TextBox.Triggers> 
      </TextBox>     
      <TextBox Name="textBox2">      
      </TextBox> 
     </StackPanel> 
    </Border> 
</Grid> 

</Window> 

est-il un problème dans la liaison?

Merci, Hemant

Répondre

2

Vous devez donner le DataTrigger dans un Style pour la deuxième TextBox

quelque chose comme:

<StackPanel> 
    <TextBox x:Name="inputBox" /> 
    <TextBox Margin="0 25 0 0"> 
    <TextBox.Style> 
     <Style TargetType="{x:Type TextBox}"> 
     <Setter Property="Text" 
       Value="No Match Found" /> 
     <Style.Triggers> 
      <DataTrigger Binding="{Binding ElementName=inputBox, 
              Path=Text}" 
         Value="ABC"> 
      <Setter Property="Text" 
        Value="Match Found" /> 
      </DataTrigger> 
     </Style.Triggers> 
     </Style> 
    </TextBox.Style> 
    </TextBox> 
</StackPanel> 

TextBox.Triggers ne supporte pas DataTrigger. Je suppose que c'est seulement pour EventTriggers que les états de documentation

sur une note latérale, j'ai normalement mes fixations dans l'élément qui finit comme la cible (autant que je peux). De cette façon, je trouve qu'il est plus facile de déboguer au moins personnellement. Si le TextBox a de mauvaises infos je vérifie instantanément qu'il est obligatoire que chaque liaison dans mon fichier xaml pour voir quel élément a une mauvaise liaison qui finit par mettre à jour mon TextBox.