我实现了一个小的视觉指示器(只是一个带边框的文本块),如果目前没有要显示的文本,它应该被隐藏。文本绑定到Indicator
属性,数据上下文似乎设置正确。
到目前为止我得到的是这个(指示文本出现,隐藏/显示不起作用):
<Border>
<Border.Style>
<Style TargetType="{x:Type Border}">
<Setter Property="Visibility" Value="Visible"/>
<Style.Triggers>
<DataTrigger Binding="{Binding Path=Indicator.Length}" Value="0">
<Setter Property="Visibility" Value="Hidden"/>
</DataTrigger>
</Style.Triggers>
</Style>
</Border.Style>
<TextBlock Text="{Binding Indicator}" />
</Border>
我的问题是,如果文本长度为零,则元素不会隐藏。
你发现我的错误了吗?
指示器是相应视图模型的一部分:
public string Indicator
{ get; set;}
更新
如果我将上面的属性更改为此,它会起作用:
public const string IndicatorPropertyName = "Indicator";
private string _indicator = "";
public string Indicator
{
get
{ return _indicator;}
set
{
if (_indicator == value) { return;}
RaisePropertyChanged(IndicatorPropertyName);
}
}
如果我引发 PropertyChanged 事件,为什么它只起作用?