我有一个 TextBox,其样式具有一个 DataTrigger 可以更改文本,如下所示:
<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>
但它不起作用,文本永远不会变为“Bar”。我已经使用另一个 TextBlock 与 Text="{Binding MyBool}" 进行了测试,并且此文本从“False”变为“True”。Snoop 没有显示我可以看到的错误,并且输出中没有任何内容。
这个问题可能看起来像是WPF Trigger binding to MVVM property的重复,但我的代码似乎与那里接受的答案没有什么不同(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;