扩展 TextBox 可防止 ValidationRule 错误工具提示出现 WPF

Extending a TextBox prevents ValidationRule error tooltip from appearing WPF

我是 WPF 和 XAML 的新手,我正在尝试创建一个扩展 TextBox 的自定义 class,以便我可以添加一些属性以更轻松地进行验证设置。验证工作正常。问题是,当我换出 XAML 中的 TextBox 时,新的 TextBox 会更新边框以显示错误,但工具提示不会按预期显示(见下文)。

在下图中,top 的错误工具提示正确显示,但 的工具提示显示错误。

这是 XAML...

<TextBox x:Name="StrTextBox3" Width="200" Height="50">
    <TextBox.Text>
        <Binding Path="BinaryIntText" UpdateSourceTrigger="PropertyChanged">
            <Binding.ValidationRules>
                <validationRules:StrValidationRule ValidatorType="{x:Static validators:StringValidator.BinaryOnly_Validator}"/>
            </Binding.ValidationRules>
        </Binding>
    </TextBox.Text>
</TextBox>

<validationRules:ValidatedTextBox x:Name="VText" Width="200" Height="50">
    <TextBox.Text>
        <Binding Path="BinaryIntText2" UpdateSourceTrigger="PropertyChanged">
            <Binding.ValidationRules>
                <validationRules:StrValidationRule ValidatorType="{x:Static validators:StringValidator.BinaryOnly_Validator}"/>
            </Binding.ValidationRules>
        </Binding>
    </TextBox.Text>
</validationRules:ValidatedTextBox>

这里是扩展 class...

class ValidatedTextBox : TextBox
{
    public ValidatedTextBox()
    {
        //
    }
}

以及 ValidationRule 的良好衡量标准...

public override ValidationResult Validate(object value, CultureInfo cultureInfo)
{
    return ValidatorType.Validate(Convert.ToString(value)).Match (
        Right: result => new ValidationResult(true, null),
        Left: error => new ValidationResult(false, error));
}

如何启用此功能?我没有初始化一个或两个特定字段吗?我错过了其他电话吗?我是否被样式困扰,或者其他一些比写这篇文章更容易解决的直接问题?

谢谢

原来我很笨;通过简单地扩展文本框,不应用文本框的默认样式,并将新样式设置为现有文本框的样式,或者只是设置,解决了这个问题。