Como posso obter este DataTrigger ao trabalho?
-
06-07-2019 - |
Pergunta
Eu quero minha caixa de texto para ter um fundo vermelho se a propriedade ViewModel = " inválido ". O que eu tenho que mudar para que isso funciona?
Esta versão diz-me que Fundo não tem um nome de tipo de qualificação .
<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 eu adicionar "TextBox". ele me diz que eu tem que ter um 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>
Solução
Permita-me para responder a este, eu tinha esquecido de embrulhar tudo em um estilo, em seguida, ele funciona muito bem:
<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 este:
<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>
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow