2009-06-19 17 views
5

Voglio che il mio TextBox abbia uno sfondo rosso se la proprietà ViewModel = "non valido". Cosa devo cambiare così funziona?Come posso far funzionare questo DataTrigger?

Questa versione indica che lo Sfondo non ha un nome di tipo valido.

<TextBox 
    Width="200" 
    Text="{Binding FieldEmail, UpdateSourceTrigger=PropertyChanged}"> 
    <TextBox.Triggers> 
     <DataTrigger Binding="{Binding FieldEmailValidationStatus}" Value="invalid"> 
      <Setter Property="TextBox.Background" Value="Tomato"/> 
     </DataTrigger> 
    </TextBox.Triggers> 
</TextBox> 

Quando aggiungo "TextBox". che mi dice che avere un EventTrigger:

<TextBox 
    Width="200" 
    Text="{Binding FieldEmail, UpdateSourceTrigger=PropertyChanged}"> 
    <TextBox.Triggers> 
     <DataTrigger Binding="{Binding FieldEmailValidationStatus}" Value="invalid"> 
      <Setter Property="Background" Value="Tomato"/> 
     </DataTrigger> 
    </TextBox.Triggers> 
</TextBox> 

risposta

10

Permettetemi di rispondere a questa domanda, mi ero dimenticato di avvolgere il tutto in uno stile, allora funziona bene:

<TextBox 
    Width="200" 
    Text="{Binding FieldEmail, UpdateSourceTrigger=PropertyChanged}"> 
    <TextBox.Style> 
     <Style> 
      <Style.Triggers> 
       <DataTrigger Binding="{Binding FieldEmailValidationStatus}" Value="invalid"> 
        <Setter Property="TextBox.Background" Value="Tomato"/> 
       </DataTrigger> 
      </Style.Triggers> 
     </Style> 
    </TextBox.Style> 
</TextBox> 

o this:

<Style x:Key="FieldEmailStyle" TargetType="TextBox"> 
    <Style.Triggers> 
     <DataTrigger Binding="{Binding FieldEmailValidationStatus}" Value="invalid"> 
      <Setter Property="TextBox.Background" Value="Yellow"/> 
     </DataTrigger> 
     <DataTrigger Binding="{Binding FieldEmailValidationStatus}" Value="valid"> 
      <Setter Property="TextBox.Background" Value="LightGreen"/> 
     </DataTrigger> 
    </Style.Triggers> 
</Style> 

    <TextBox 
     Width="200" 
     Style="{StaticResource FieldEmailStyle}" 
     Text="{Binding FieldEmail, UpdateSourceTrigger=PropertyChanged}"> 
    </TextBox> 
Problemi correlati