警告 -- WPF に関しては初心者です。だから私がやろうとしているのは、ViewModel の文字列プロパティにバインドされたテキスト ボックスを持つことです。ユーザーがテキストボックスをクリアすると、ユーザーが最初に持っていたもの(ウィンドウが開いたとき)に自動的に戻ります。基本的に、ユーザーがテキストボックスをクリアできないようにしています。
現在、私の WPF は TwoWay としてバインドされており、UpdateSourceTrigger を PropertyChanged に設定しています。ユーザーが小さな変更を加えたときに ViewModel のプロパティが更新されるのが好きなので、その UpdateSourceTrigger を保持したいと思います。そうすれば、ユーザーが何かをしたときに他の UI を実行できます (たとえば、ユーザーが何かを変更したために [保存] ボタンを更新します)。
現在、ViewModel のプロパティは次のようになっています。元の値を使用しようとしています。
public string SourceName
{
get { return this.sourceName; }
set
{
if (!this.sourceName.Equals(value, StringComparison.OrdinalIgnoreCase))
{
if (!string.IsNullOrWhiteSpace(value))
this.sourceName = value;
else
this.sourceName = this.configuredSource.Name;
RaisePropertyChanged("SourceName");
}
}
}
私が抱えている問題は、私が設定した UpdateSourceTrigger のために、ビューが私の 'RaisePropertyChanged' を無視していると思うことです。トリガーを取り除くと、これは機能しますが、UI を更新するには、コントロールからフォーカスを失う必要があります。したがって、可能であればトリガーを保持したいのです。
ユーザーがテキストボックスをクリアした場合、元の値に戻す良い方法はありますか?