ElementHost控件中的WPF验证

时间:2009-07-07 14:58:56

标签: wpf validation elementhost

我有一个WinForms表单,其中包含一个ElementHost控件(包含一个WPF UserControl)和一个Save按钮。

在WPF UserControl中,我有一个文本框,上面有一些验证。像这样......

<TextBox Name="txtSomething" ToolTip="{Binding ElementName=txtSomething, Path=(Validation.Errors).[0].ErrorContent}">
    <Binding NotifyOnValidationError="True" Path="Something">
        <Binding.ValidationRules>
            <commonWPF:DecimalRangeRule Max="1" Min="0" />
        </Binding.ValidationRules>
    </Binding>
</TextBox>

一切正常。但是,我想要做的是在表单处于无效状态时禁用“保存”按钮。

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:1)

答案 1 :(得分:0)

好吧,我终于找到了解决问题的方法。

在WPF控件中,我将其添加到Loaded事件。

Validation.AddErrorHandler(this.txtSomething, ValidateControl);

上面的ValidateControl,定义如下:

private void ValidateControl(object sender, ValidationErrorEventArgs args)
{
    if (args.Action == ValidationErrorEventAction.Added)
       OnValidated(false);
    else
       OnValidated(true);
}

最后,我添加了一个名为Validated的事件,其事件args中包含IsValid布尔值。然后我能够在我的表单上挂起这个事件,告诉它控件是否有效。

如果有更好的方式我有兴趣学习。