【问题标题】:Manually set Validation error on Silverlight control在 Silverlight 控件上手动设置验证错误
【发布时间】:2011-07-02 00:26:40
【问题描述】:

我有一个无法直接绑定到的 ComboBox(由于 this bug),所以我从我写的 Behavior 中将它设置为 SelectedItem。现在,如果绑定到我的行为的 SelectedValue(而不是 ComboBox 的 SelectedValue)的属性无效(例如,在组合框中没有选择任何内容,但应该有),我想通知组合框“变红”,并显示错误代码.我知道这是绑定系统(如果 NotifyOnValidationError=true)自动处理的东西(它设置绑定控件的状态和错误代码)。

我的问题有两个:

  • 如何订阅绑定系统的通知?
  • 如何将 ComboBox 的状态设置为无效并设置 errorCode 而不破解 controltemplate 或制作不必要的附加属性?

编辑:我找到了 Validation 静态类,但它只有 GetHasErrors 和 GetErrors,而我需要为这些设置方法。是不是没救了?

【问题讨论】:

    标签: silverlight validation data-binding silverlight-4.0


    【解决方案1】:

    好的,在阅读了一整天关于 SL3 异常样式验证的半破解解决方案以及带有附加属性和子类化组合框的可怕想法(哦,痛苦!)的论坛帖子之后,我设法将它组合成一个半-工作解决方案。 :)

    诀窍是:控件侦听每个依赖属性以获取验证通知,包括 FrameworkElement.Tag!

    现在我们需要一个实现 IDataErrorInfo 的对象来绑定到组合框的标签。

    由于在我的场景中,我使用 Behavior 手动设置组合框,我已经有关于行为的绑定数据,所以我所做的只是将行为的 SelectedValue 绑定到组合框的标签,然后观看烟花!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-07-12
      • 2012-09-22
      • 2011-01-02
      • 2011-04-05
      • 1970-01-01
      • 2010-12-28
      • 1970-01-01
      • 2018-03-21
      相关资源
      最近更新 更多