我已经得到了我作为一个Validation.ErrorTemplate
为文本框使用下面的控件模板: -Validation.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>
当一个TextBox包含无效内容,上面的模板应用红色边框,并增加了一个红色的在结核病的右侧立即包含感叹号。
的问题是,感叹号立即重叠什么结核病的权利,而不是布局更改为accomomodate感叹号。我在DataGrids中有类似的问题 - 惊叹号与包含单元格的右边缘重叠,而不是列宽增加以适应它。
使用snoop,看来模板被显示在“装饰器层”我假设是一个单独的视件树?这可以解释为什么不重新计算窗口的布局以考虑感叹号。任何人都可以提出一种方法来实现我想要的?
这没有帮助,但我有同样的问题,只有我的文本框下方的验证错误消息。 – BenCr 2013-04-13 16:07:45
@BenCr在下面看到我的答案。不知道它是否会帮助你的情况... – 2013-04-17 14:01:44
谢谢,但我的界面是专为触摸,所以工具提示是不会工作。我为我的验证消息留下了更多空间,因此它们不会与其他控件重叠。 – BenCr 2013-04-17 14:18:10