次のように、テキストを変更する DataTrigger を持つスタイルの TextBox があります。
<Grid>
<TextBlock Text="Foo">
<TextBlock.Style>
<Style BasedOn="{StaticResource TextStyle}" TargetType="TextBlock">
<Style.Triggers>
<DataTrigger Binding="{Binding MyBool}" Value="True">
<Setter Property="Text" Value="Bar"/>
</DataTrigger>
</Style.Triggers>
</Style>
</TextBlock.Style>
</TextBlock>
</Grid>
しかし、それは機能していません。テキストが「バー」に変わることはありません。Text="{Binding MyBool}" で別の TextBlock を使用してテストしたところ、このテキストは "False" から "True" に変わります。スヌープは私が見ることができるエラーを明らかにせず、出力には何もありません。
この質問は、MVVMプロパティへのWPFトリガーバインディングの複製のように見えるかもしれませんが、私のコードはそこで受け入れられた回答と変わらないようです( http://www.thejoyofcode.com/Help_Why_cant_I_use_DataTriggers_with_controls_in_WPF.aspx、セクション「スタイルの使用」)関連する方法。そして、実際の回答で提案されているように DataTemplate を使用するのは間違っているようです。これは、これを単一の TextBlock にのみ適用したいためですが、正しい場合は、このために DataTemplate を作成する方法がわかりません...
編集:
これは、私がバインドしているプロパティがどのように見えるかです:
public bool MyBool
{
get { return _myBool; }
set
{
if (_myBool== value)
return;
_myBool= value;
NotifyPropertyChanged();
}
}
private bool _myBool;