20

次のように、テキストを変更する 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;
4

1 に答える 1