我有一个带有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>
但是它没有起作用,文本从未更改为“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;