現時点で表示するテキストがない場合は非表示にする小さな視覚的インジケーター (境界線のあるテキストブロックのみ) を実装しました。テキストは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>
私の問題は、テキストの長さがゼロの場合、要素が非表示にならないことです。
あなたは私の間違いを見つけますか?
Indicator は対応するビューモデルの一部です:
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 イベントを発生させた場合にのみ機能するのはなぜですか?