DataBindingを使用してtextboxプロパティを更新できません
-
06-07-2019 - |
質問
2つの依存関係プロパティを持つカスタムウィンドウがあります。 ValidationStatus、および文字列ValidationMessage。これらのプロパティのバインドは正常に機能しますが、これらの値が変化してもトリガーはトリガーされないようです。私は何を間違えていますか?
<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>
解決
スタイルセッターは、ローカル属性設定を上書きしません。したがって、TextBlockでTextプロパティとBackgroundプロパティを指定したため、データトリガーの値は無視されます。問題を修正するには、次のコードに示すように、これらのプロパティのデフォルト値をスタイルに設定します。
<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>
所属していません StackOverflow