首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Validation.ErrorTemplate大小

Validation.ErrorTemplate大小
EN

Stack Overflow用户
提问于 2013-04-11 22:18:19
回答 1查看 1.7K关注 0票数 3

我有下面的控件模板,我使用它作为TextBoxes的Validation.ErrorTemplate

代码语言:javascript
复制
<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包含无效内容时,上面的模板将应用红色边框,并在TB的右侧添加一个包含感叹号的红色框。

问题是,感叹号与紧靠TB右侧的任何内容重叠,而不是改变布局以容纳感叹号。我在DataGrids中遇到了类似的问题-感叹号与包含单元格的右边缘重叠,而不是通过增加列宽来容纳它。

使用Snoop,模板似乎显示在一个“装饰层”中,我假设它是一个单独的可视化树?这就解释了为什么没有重新计算窗口的布局来考虑感叹号。有没有人能建议一种方法来实现我想要的东西?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-04-17 21:58:50

正如我所怀疑的,这是由于错误模板被呈现在装饰层上,所以它不会影响窗口的布局。请参阅:http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/9de3c9e5-5759-4f88-9184-175d3eaabdad/

我现在使用的是这个控件模板:

代码语言:javascript
复制
<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>

这将在控件周围绘制一个红色边框,其中一个红色小三角形与控件的右上角重叠-将鼠标悬停在该控件上将显示包含错误消息的工具提示。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15951179

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档