警告——我是 WPF 的新手。所以我想要做的是在我的 ViewModel 中有一个绑定到字符串属性的文本框。当用户清除文本框时,我希望它自动回到用户最初的状态(当窗口打开时)。基本上我阻止用户清除文本框。
目前,我的 WPF 绑定为 TwoWay,并且我确实将 UpdateSourceTrigger 设置为 PropertyChanged。我想我想保留那个 UpdateSourceTrigger,因为我喜欢我的 ViewModel 中的属性在用户进行一点点更改时得到更新。这样,当用户执行某些操作时,我可以执行其他 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");
}
}
}
我遇到的问题是我认为视图忽略了我的“RaisePropertyChanged”,因为我设置了 UpdateSourceTrigger。如果我取出触发器,那么这可行,但我必须失去对控件的关注才能更新 UI。因此,如果可以的话,为什么我想保留触发器。
如果用户清除文本框,任何人都有一个很好的方法来恢复原始值?