我有以下样式来验证控件中的输入:
<Style x:Key="MyErrorTemplate" TargetType="Control">
<Style.Setters>
<Setter Property="Validation.ErrorTemplate">
<Setter.Value>
<ControlTemplate x:Name="ControlErrorTemplate">
<StackPanel Orientation="Vertical" Height="Auto">
<StackPanel Orientation="Horizontal">
<TextBlock Foreground="Red" FontSize="20">!</TextBlock>
<AdornedElementPlaceholder x:Name="Holder"/>
</StackPanel>
<Label Foreground="Red" Content="{Binding ElementName=Holder,
Path=AdornedElement.(Validation.Errors)[0].ErrorContent}"/>
</StackPanel>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style.Setters>
</Style>
如果发生错误,标签中的错误消息将出现在控件(例如文本框)下方,并与下面的控件重叠。我将StackPanel的Height设置为“Auto”,但没有帮助。每个控件都位于一个 Grid 单元格中,并且 Grid 的行高也是 Auto。 你能告诉我我缺少什么吗?我希望错误消息能够将下面的内容推下去。 谢谢。
最佳答案
Validation.ErrorTemplate显示装饰层上的错误反馈。这意味着当布局系统在装饰元素层上测量和排列控件时,将不会考虑此模板中的所有控件。
关于WPF 控件模板高度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11250107/