Validation 使用Silverlight 4根据验证严重性设置数据表单标签样式

Validation 使用Silverlight 4根据验证严重性设置数据表单标签样式,validation,silverlight-4.0,silverlight-toolkit,Validation,Silverlight 4.0,Silverlight Toolkit,我正在尝试扩展Silverlight验证以包括严重性。我采取的方法是在消息的开头添加一个特殊字符,以指示它是错误还是警告,并将样式更改为红色或蓝色。通过指定自定义样式并使用值转换器,我已经成功地为Validation Summery控件、输入控件和ValidationToolTips实现了这一点。但我似乎无法让它与标签一起工作 我的问题是,我似乎无法绑定验证消息。我尝试了以下方法,但没有成功: 或 有人能提供一些帮助或建议一种替代方法吗。 非常感谢链接和/或示例代码。我通过抛出不同类型的异常

我正在尝试扩展Silverlight验证以包括严重性。我采取的方法是在消息的开头添加一个特殊字符,以指示它是错误还是警告,并将样式更改为红色或蓝色。通过指定自定义样式并使用值转换器,我已经成功地为Validation Summery控件、输入控件和ValidationToolTips实现了这一点。但我似乎无法让它与标签一起工作

我的问题是,我似乎无法绑定验证消息。我尝试了以下方法,但没有成功:

有人能提供一些帮助或建议一种替代方法吗。
非常感谢链接和/或示例代码。

我通过抛出不同类型的异常(针对警告的ValidationWarning异常)解决了这个问题。每次引发验证异常时,都会触发BindingValidationError事件。在事件处理程序中,我检查异常类型并根据异常更改样式:

    private void OnBindingValidationError(object sender, ValidationErrorEventArgs e)
    {
        var textBox = sender as TextBox;

        if (textBox != null)
        {
            if (e.Error.Exception is ValidationWarning)
            {
                UpdateStyle(textBox, "TextBoxWithWarning");
            }
            else
            {
                UpdateStyle(textBox, "TextBoxWithError");
            }
        }
    }

    private static void UpdateStyle(TextBox textBox, string styleName)
    {
        var newStyle = (Style)Application.Current.Resources[styleName];
        if (textBox.Style != newStyle)
        {
            textBox.Style = newStyle;
            textBox.Focus();
        }
    }