ControlTemplate 和验证 - 如何定位项目?

发布于 2024-10-15 02:19:31 字数 351 浏览 7 评论 0原文

我创建了 ControlTemplate,如果我的文本框上存在验证错误,则会显示该模板。我的控件模板看起来像这样,

<ControlTemplate x:Key="TextBoxErrorTemplate">
  <TextBlock  Foreground="Orange" FontSize="12pt">Field can't be empty</TextBlock>
</ControlTemplate>

但是如果发生验证错误,textBlock 会出现在文本框上 - 并且用户无法输入正确的值。有没有办法设置 TextBlock 的位置 - 显示错误信息的位置?

I created ControlTemplate which is shown if there are validation error on my textbox. My controltemplate looks like that

<ControlTemplate x:Key="TextBoxErrorTemplate">
  <TextBlock  Foreground="Orange" FontSize="12pt">Field can't be empty</TextBlock>
</ControlTemplate>

However if validation errors occure textBlock appears on textBox - and the user can't enter proper value. Is there any way to set the position of TextBlock - the one which shows error info?

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

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

发布评论

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

评论(1

宫墨修音 2024-10-22 02:19:31

ErrorTemplates 用于装饰控件,而不是用于更改其内部属性,为此,您应该使用带有相应触发器的样式:

            <Style TargetType="TextBox">
                <Style.Triggers>
                    <Trigger Property="Validation.HasError" Value="True">
                        <Setter Property="Foreground" Value="Orange"/>
                        <Setter Property="FontSize" Value="12"/>
                    </Trigger>
                </Style.Triggers>
            </Style>

如果您想显示一些文本,您可以使用如下模板:

    <ControlTemplate x:Key="TextBoxErrorTemplate">
        <StackPanel Orientation="Horizontal">
            <AdornedElementPlaceholder/>
            <TextBlock  Foreground="Orange" FontSize="12pt">Field can't be empty</TextBlock>
        </StackPanel>
    </ControlTemplate>

TextBlock 将显示在右侧的文本框。

如果您只想显示错误消息,我建议您设置文本框的工具提示并将其绑定到验证错误。

ErrorTemplates are for adorning the control and not for changing its internal properties, to do this you should use a style with the respective trigger:

            <Style TargetType="TextBox">
                <Style.Triggers>
                    <Trigger Property="Validation.HasError" Value="True">
                        <Setter Property="Foreground" Value="Orange"/>
                        <Setter Property="FontSize" Value="12"/>
                    </Trigger>
                </Style.Triggers>
            </Style>

If you want to display some text you could use a template like this:

    <ControlTemplate x:Key="TextBoxErrorTemplate">
        <StackPanel Orientation="Horizontal">
            <AdornedElementPlaceholder/>
            <TextBlock  Foreground="Orange" FontSize="12pt">Field can't be empty</TextBlock>
        </StackPanel>
    </ControlTemplate>

The TextBlock will be displayed on the right of the TextBox.

If you just want to show error messages i'd suggest you set the tooltip of the TextBox and bind it to the validation errors.

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