【问题标题】:How to clear WPF text box without updating its two-way bound source?如何在不更新其双向绑定源的情况下清除 WPF 文本框?
【发布时间】:2016-06-18 02:38:46
【问题描述】:

我有一个实现INotifyPropertyChangedCustomer 类。在我的CustomerDetailsViewModel 类中,我有一个Customer 类型的属性。在 XAML 中,每个文本框都绑定到我的视图模型公开的 Customer 的每个属性。我使用TwoWay 绑定和PropertyChanged 作为UpdateSourceTrigger

现在我想要一个“清除”按钮来清除所有文本框的内容。意图是允许用户使用另一个“添加”按钮创建新客户。只有当用户输入正确的文本时,才必须启用“添加”按钮。即不应该有任何验证错误。

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

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

【问题讨论】:

  • 您是否尝试过 UpdateSourceTrigger 丢失焦点或删除 UpdateSourceTrigger 属性,因为它是一个文本框。

标签: .net wpf binding wpf-controls inotifypropertychanged


【解决方案1】:

您可以使用 DataTrigger。像这样的:

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

【讨论】:

    【解决方案2】:

    据我了解,当您使用 Clear 命令时,您应该做的事情是取消绑定 Customer 对象,例如。从绑定到接口的客户中创建一个新客户。 显示的验证错误只是有意的。

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

    【讨论】:

      猜你喜欢
      • 2015-09-15
      • 2016-12-28
      • 2011-09-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-11
      • 1970-01-01
      相关资源
      最近更新 更多