Comment puis-je faire fonctionner ce DataTrigger?
-
06-07-2019 - |
Question
Je souhaite que ma zone de texte ait un fond rouge si la propriété ViewModel = " non valide ". Que dois-je changer pour que cela fonctionne?
Cette version me dit que l’arrière-plan n’a pas de nom de type qualifiant .
<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>
Quand j'ajoute "TextBox." il me dit que je dois avoir 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>
La solution
Permettez-moi de répondre à cette question. J'avais oublié de l'envelopper dans un style, puis ça fonctionne 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>
ou ceci:
<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>
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow