Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Silverlight控件上手动设置验证错误_Silverlight_Validation_Data Binding_Silverlight 4.0 - Fatal编程技术网

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

在Silverlight控件上手动设置验证错误,silverlight,validation,data-binding,silverlight-4.0,Silverlight,Validation,Data Binding,Silverlight 4.0,我有一个无法直接绑定的组合框(由于),所以我将其设置为SelectedItem,它来自我编写的行为。现在,如果绑定到我的行为的SelectedValue(而不是ComboBox的SelectedValue)的属性无效(例如,ComboBox中没有选择任何内容,而应该有),我想通知ComboBox“变红”,并显示错误代码。我知道这是绑定系统(如果NotifyOnValidationError=true)自动处理的(它设置绑定控件的状态和错误代码) 我的问题有两个方面: 如何订阅绑定系统的通知 如

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

我的问题有两个方面:

  • 如何订阅绑定系统的通知
  • 如何在不破坏controltemplate或创建不必要的附加属性的情况下,将ComboBox的状态设置为invalid并设置errorCode

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

好吧,在阅读了一整天论坛上关于SL3异常风格验证的半破解解决方案和带有附加属性和子类化combobox的可怕想法(哦,痛苦!)之后,我成功地将其结合到半工作解决方案中。:)

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

现在我们需要一个实现IDataErrorInfo的对象来绑定到comboBox的标记

因为在我的场景中,我正在使用一个行为来手动设置组合框,我已经有了一个关于该行为的绑定数据,所以我所做的只是将该行为的SelectedValue绑定到组合框的标记上,然后观看焰火