我创建了ControlTemplate,如果我的文本框上有验证错误,则会显示。我的controltemplate看起来像那样
<ControlTemplate x:Key="TextBoxErrorTemplate">
<TextBlock Foreground="Orange" FontSize="12pt">Field can't be empty</TextBlock>
</ControlTemplate>
但是,如果发生验证错误,textBox会出现在textBox上 - 并且用户无法输入正确的值。有没有办法设置TextBlock的位置 - 显示错误信息的位置?
答案 0 :(得分: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的工具提示并将其绑定到验证错误。