Wpf Validation.ErrorTemplate大小
我有以下控件模板,用作文本框的Wpf Validation.ErrorTemplate大小,wpf,xaml,wpf-controls,Wpf,Xaml,Wpf Controls,我有以下控件模板,用作文本框的验证.ErrorTemplate:- <ControlTemplate x:Key="ControlValidationErrorTemplate"> <DockPanel LastChildFill="True"> <Border Background="Red" DockPanel.Dock="right" Padding="2,0,2,0" Too
验证.ErrorTemplate
:-
<ControlTemplate x:Key="ControlValidationErrorTemplate">
<DockPanel LastChildFill="True">
<Border Background="Red"
DockPanel.Dock="right"
Padding="2,0,2,0"
ToolTip="{Binding ElementName=valAdorner, Path=AdornedElement.(Validation.Errors), Converter={x:Static val:ValidationErrorsConverter.Instance}}">
<TextBlock Text="!"
VerticalAlignment="center"
HorizontalAlignment="center"
FontWeight="Bold"
Foreground="white" />
</Border>
<AdornedElementPlaceholder x:Name="valAdorner"
VerticalAlignment="Center">
<Border BorderBrush="red"
BorderThickness="1" />
</AdornedElementPlaceholder>
</DockPanel>
</ControlTemplate>
当文本框包含无效内容时,上述模板将应用红色边框,并在TB的右侧立即添加一个包含感叹号的红色框
问题是,感叹号与TB右侧的任何内容重叠,而不是布局更改以容纳感叹号。我在DataGrids中也有类似的问题-感叹号重叠在包含单元格的右边缘,而不是增加列宽以容纳它
使用Snoop,模板似乎显示在一个“装饰层”中,我假设它是一个单独的视觉树?这就解释了为什么不重新计算窗口的布局来考虑感叹号。有人能提出一个方法来实现我想要的吗 正如我所怀疑的,这是由于在装饰层上渲染错误模板造成的,因此不会影响窗口的布局。见: 我现在使用此控件模板:-
<ControlTemplate x:Key="ControlValidationErrorTemplate">
<Grid>
<Polygon Points="9,9 9,0 0,0"
Stroke="Red"
StrokeThickness="1"
Fill="Red"
HorizontalAlignment="Right"
VerticalAlignment="Top"
ToolTip="{Binding ElementName=valAdorner, Path=AdornedElement.(Validation.Errors), Converter={x:Static val:ValidationErrorsConverter.Instance}}" />
<AdornedElementPlaceholder x:Name="valAdorner"
VerticalAlignment="Center">
<Border BorderBrush="red"
BorderThickness="1" />
</AdornedElementPlaceholder>
</Grid>
</ControlTemplate>
这将在控件周围绘制一个红色边框,在控件的右上角有一个小的红色三角形重叠-悬停在该边框上会显示包含错误消息的工具提示。这没有帮助,但我遇到了相同的问题,只是在文本框下方有验证错误消息。@BenCr请参阅下面的我的答案。不确定它是否对你有帮助…谢谢,但我的界面是为触摸设计的,所以工具提示不起作用。我只是为我的验证消息留出了更多的空间,这样它们就不会与其他控件重叠。