如何清除WPF文本框而不更新其双向绑定源?

时间:2016-03-04 11:19:15

标签: .net wpf binding wpf-controls inotifypropertychanged

我有一个Customer类来实现INotifyPropertyChanged。在我的CustomerDetailsViewModel课程中,我有一个Customer类型的属性。在XAML中,每个文本框都绑定到我的视图模型公开的Customer的每个属性。我将TwoWay绑定与PropertyChanged一起用作UpdateSourceTrigger

现在我希望有一个" Clear"按钮将清除所有文本框的内容。意图是允许用户使用另一个"添加"来创建新客户。按钮。 "添加"只有在用户输入正确的文本时才能启用按钮。即不应有任何验证错误。

如何清除所有文本框而不更新当前显示在GUI上的Customer实例的绑定属性的值?

我的解决方案: 一种方法是创建Customer的新实例,将所有属性(如Name,Address等)设置为空字符串。但问题是,我创建新实例用户的那一刻会在GUI上看到错误模板,因为验证(例如'空名称不允许')失败。

2 个答案:

答案 0 :(得分:0)

您可以使用DataTrigger。像这样:

<DataTrigger Binding={Binding Text, ElementName=txtTextBox1} Value="">

答案 1 :(得分:0)

据我所知,你应该做的事情是在使用Clear命令时解除Customer对象的绑定,例如。从绑定到接口的客户创建新客户。 显示验证错误只是意图。

编辑:如果要使用它们强制用户输入正确的数据,为什么要隐藏验证错误? 我认为在尝试保存之前提供要求实际上更加用户友好。