在Silverlight控件上手动设置验证错误

时间:2011-02-22 13:35:46

标签: silverlight validation data-binding silverlight-4.0

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

我的问题是双重的:

  • 如何订阅Binding系统的通知?
  • 如何设置ComboBox的状态无效并设置errorCode而不破坏controltemplate,或者制作不必要的附加属性?

编辑:我发现了Validation静态类,但它只有GetHasErrors和GetErrors,而我需要为这些设置方法。它没有希望吗?

1 个答案:

答案 0 :(得分:1)

好的,经过一整天的阅读论坛帖子关于SL3异常风格验证的半黑客解决方案和附加属性和子类组合框的可怕想法(哦,痛苦!),我已经设法将它组合成一个半工作解决方案。 :)

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

现在我们需要的是一个实现IDataErrorInfo的对象,以绑定到comboBox的Tag。

因为在我的场景中,我正在使用一个Behavior来手动设置comboBox,我已经有了行为的绑定数据,所以我所做的就是将行为的SelectedValue绑定到comboBox的Tag上,然后观看fireworks! / p>