【问题标题】:How to hide a control when it has an invalid binding如何在控件具有无效绑定时隐藏控件
【发布时间】:2012-04-11 01:26:45
【问题描述】:

我想隐藏一个控件,例如 TextBox,当它对无效的属性(例如 Text 属性)具有绑定时(已引发 BindingExpression 路径错误)。这与在触发器中简单地检查绑定的值是否为空不同。 Null 实际上可能是一个完全可以接受的值,并且控件仍应显示。基本上,我有一个 DataTemplate,我想将它与我的 VM 中的几种不同类型的对象一起重用,其中一些可能具有某些共同的属性,而其中一些可能具有独特的属性。当当前作为 DataTemplate 绑定源的对象上不存在特定属性时,DataTemplate 将具有某种额外的触发器或绑定,这些触发器或绑定将隐藏绑定到不存在的属性的特定控件。

【问题讨论】:

标签: wpf xaml


【解决方案1】:

当发生验证错误时,您可以使用Validation.ErrorTemplate 来设置控件的样式。

然后只需在绑定中设置ValidatesOnDataError = True 就可以了

【讨论】:

  • 但是如果有另一个合法的验证错误怎么办?例如绑定到整数的 TextBox.Text 并且用户键入一个字母,引发验证错误(无法解析整数),然后 TextBox 消失。
  • 另外,为绑定设置 ValidatesOnDataError = True,似乎并没有真正捕捉到 BindingExpression 路径错误
  • 嗯,是的,我显然没有考虑过。菲尔的评论似乎是一个很好的解决方案。 FallBackValue 和可见性转换器。那完全可以。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-04-11
  • 1970-01-01
  • 2014-09-18
  • 2021-11-08
  • 1970-01-01
  • 1970-01-01
  • 2018-12-25
相关资源
最近更新 更多