2009-06-19 24 views
5

Quiero que mi TextBox tenga un fondo rojo si la propiedad ViewModel = "no válida". ¿Qué tengo que cambiar para que esto funcione?¿Cómo puedo hacer que funcione este DataTrigger?

Esta versión me dice que El fondo no tiene un nombre de tipo calificado.

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

Cuando agrego "TextBox." que me dice que tiene que tener 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> 

Respuesta

10

Permítanme responder éste, me había olvidado de envolverlo todo en un estilo, entonces funciona muy bien:

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

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