2009-06-19 28 views
5

如果ViewModel屬性=「無效」,我希望我的TextBox具有紅色背景。我有什麼需要改變,所以這個工作?如何讓這個DataTrigger工作?

此版本告訴我,背景沒有限定類型名稱

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

當我添加「TextBox」。它告訴我,我必須有一個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> 

回答

10

讓我回答這個問題,我忘了把它包起來所有的風格,那麼它工作得很好:

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

或這個:

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