0

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

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

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

4

1 回答 1

2

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 将显示在 TextBox 的右侧。

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

于 2011-01-31T21:55:58.790 回答