Não é possível atualizar propriedade caixa de texto usando DataBinding
-
06-07-2019 - |
Pergunta
Eu tenho uma janela costume que tem duas propriedades depencency: Boolean? ValidationStatus e corda ValidationMessage. Encadernação estas propriedades bem funciona, mas gatilho não parece ser desencadeada quando esses valores mudam. O que estou fazendo de errado?
<TextBlock x:Name="validationTextBox"
Grid.Row="1"
Grid.ColumnSpan="2"
Text="{Binding ElementName=_this, Path=ValidationMessage}"
TextAlignment="Center"
Background="Green">
<TextBlock.Style>
<Style>
<Style.Triggers>
<DataTrigger Value="False" Binding="{Binding ElementName=_this, Path=ValidationStatus}">
<Setter Property="Panel.Background" Value="Red"/>
<Setter Property="TextBox.Text" Value="Outer checkbox is not checked"/>
</DataTrigger>
</Style.Triggers>
</Style>
</TextBlock.Style>
</TextBlock>
Solução
Estilo Setters não substituem as configurações de atributos locais. Portanto valores do gatilho dados estão sendo ignorados porque você especificou as propriedades texto e do fundo do TextBlock. Para corrigir o problema definir os valores padrão dessas propriedades no estilo, como mostrado no código a seguir:
<TextBlock x:Name="validationTextBox"
Grid.Row="1"
Grid.ColumnSpan="2"
TextAlignment="Center">
<TextBlock.Style>
<Style>
<Setter Property="TextBox.Text" Value="{Binding ElementName=_this, Path=ValidationMessage}"/>
<Setter Property="TextBox.Background" Value="Green"/>
<Style.Triggers>
<DataTrigger Value="False" Binding="{Binding ElementName=_this, Path=ValidationStatus}">
<Setter Property="TextBox.Background" Value="Red"/>
<Setter Property="TextBox.Text" Value="Outer checkbox is not checked"/>
</DataTrigger>
</Style.Triggers>
</Style>
</TextBlock.Style>
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow