默认验证模板在 WPF 中未触发

发布于 2024-10-06 05:04:58 字数 1056 浏览 2 评论 0原文

我的代码如下:

<TextBox >
    <TextBox.Text>
        <Binding Path="SaveAsText" ValidatesOnDataErrors="True" ValidatesOnExceptions="True" UpdateSourceTrigger="PropertyChanged">
            <Binding.ValidationRules>
                <val:SaveTextValidator></val:SaveTextValidator>
            </Binding.ValidationRules>
        </Binding>
    </TextBox.Text>
    <TextBox.Style>
        <Style TargetType="{x:Type TextBox}">
            <Style.Triggers>
                <Trigger Property="Validation.HasError" Value="true">
                    <Setter Property="ToolTip"
    Value="{Binding RelativeSource={x:Static RelativeSource.Self},
                    Path=(Validation.Errors), Converter={StaticResource errorConverter}}"/>
                </Trigger>
            </Style.Triggers>
        </Style>
    </TextBox.Style>
</TextBox>

现在,当发生验证错误时,将显示工具提示,但不会触发将文本框边框设置为红色的默认验证模板!!
我哪里出错了?

My code goes as follows :

<TextBox >
    <TextBox.Text>
        <Binding Path="SaveAsText" ValidatesOnDataErrors="True" ValidatesOnExceptions="True" UpdateSourceTrigger="PropertyChanged">
            <Binding.ValidationRules>
                <val:SaveTextValidator></val:SaveTextValidator>
            </Binding.ValidationRules>
        </Binding>
    </TextBox.Text>
    <TextBox.Style>
        <Style TargetType="{x:Type TextBox}">
            <Style.Triggers>
                <Trigger Property="Validation.HasError" Value="true">
                    <Setter Property="ToolTip"
    Value="{Binding RelativeSource={x:Static RelativeSource.Self},
                    Path=(Validation.Errors), Converter={StaticResource errorConverter}}"/>
                </Trigger>
            </Style.Triggers>
        </Style>
    </TextBox.Style>
</TextBox>

Now when a validation error happens, the ToolTip is getting displayed but the default validation template of making a TextBox border red is not firing !!
Where am I going wrong?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

许一世地老天荒 2024-10-13 05:04:58

您正在覆盖 TextBox 的默认样式(基本上是说:除非我告诉您,否则什么都不做)。

我想默认样式中有一些触发器使边框变为红色。您可以自行实现它,也可以基于当前默认的样式。

<Style BasedOn={x:Type TextBox} ...>

You are overwriting the default style of the TextBox (basically saying: do nothing unless I tell you to).

I imagine there is some trigger in the default style that makes the border red. Either implement it your self or base your style on the current default.

<Style BasedOn={x:Type TextBox} ...>
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文