如何在MVVM中单击时清除文本框
我有一个文本框和一个按钮,我希望在按钮单击时清除文本框的内容。 我正在使用MVVM棱镜。
我的XAML是
在我的视图模型中
public string TextProperty { get { return selectedText; } set { selectedText = value; SetProperty(ref selectedText, value); } } //////......... private void MyCommandExecuted(object obj) { TextProperty= string.Empty; MessageBox.Show("Command Executed"); }
但它并没有清除文本框。 我错过了什么?
因为在你的setter中你设置了两次字段,一个没有触发PropertyChanged而另一个触发了PropertyChanged,在第二个集合SetProperty
只有在有新值时才会引发PropertyChanged
,但是你已经将字段设置为某个值,所以通过SetProperty
设置永远不会引发PropertyChanged,因为您将其设置为相同的值。
所以在你的setter中你应该删除:
selectedText = value;
您没有使用正确的属性名称“TextProperty”触发PropertyChanged事件 – 或者我错过了什么? 我从未使用过棱镜。 尝试:
public string TextProperty { get { return selectedText; } set { SetProperty(ref selectedText, value, "TextProperty"); } }
或者更好的是:
private void MyCommandExecuted(object obj) { SetProperty(TextProperty, string.Empty); MessageBox.Show("Command Executed"); }
并从属性设置器中删除SetProperty调用。