【问题标题】:How to set ValidatesOnDataErrors from codebehind如何从代码隐藏设置 ValidatesOnDataErrors
【发布时间】:2012-08-24 15:40:03
【问题描述】:

在 WPF 中,如何为控件(例如 TextBox)上的绑定设置 ValidatesOnDataErrors 属性?这可能吗?

谢谢!

【问题讨论】:

    标签: wpf


    【解决方案1】:

    它只是Binding 类的一个属性。您可以在代码中构造绑定,设置属性并在TextBox 上使用SetBinding

    您可以使用GetBinding 来获取现有绑定,但您不能在它们使用后对其进行修改...

    【讨论】:

    • 我试图在控件的 lostfocus 事件上将 ValidatesOnDataErrors 设置为 true,但它抛出了一个异常,指出绑定在使用后无法更改。有没有办法解决?谢谢!
    • 您可以新建一个Binding对象,然后使用SetBinding方法将其关联到正确的DependencyProperty(例如TextProperty),如H.B.说。
    • @DukeCyrillus 您应该在设置Binding 的同时设置ValidatesOnDataErrors,而不是在LostFocus 事件中
    • @DukeCyrillus:正如我已经说过的,你可以构造一个绑定并设置它,如果需要的话,你可以从旧的绑定对象中转移属性......
    • 我不希望某些控件验证,除非它们至少被访问过一次,这就是我试图在 LostFocus 事件中重置绑定的原因。不确定是否有更好的方法,但创建一个新的绑定并将其重新设置为属性似乎有效!谢谢!!
    【解决方案2】:

    请记住,ValidatesOnDataErrors 是绑定的属性,而不是控件的属性。

    因此寻找控件的正确绑定(在我的示例中,TextProperty 依赖属性)...

    试试这个:

    System.Windows.Data.BindingExpression binding = this.textBox1.GetBindingExpression(System.Windows.Controls.TextBox.TextProperty);
    binding.ParentBinding.ValidatesOnDataErrors = true;
    

    【讨论】:

    • 绑定使用后无法更改。
    猜你喜欢
    • 1970-01-01
    • 2014-01-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-04
    • 2011-08-31
    • 2011-08-05
    相关资源
    最近更新 更多