gpt4 book ai didi

wpf - Validation.ErrorTemplate 大小

转载 作者:行者123 更新时间:2023-12-02 00:09:56 33 4
gpt4 key购买 nike

我有以下控件模板,我将其用作文本框的 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 包含无效内容时,上述模板会应用红色边框并在 TB 右侧立即添加一个包含感叹号的红色框。

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

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

最佳答案

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

我现在改用这个控件模板:-

<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>

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

关于wpf - Validation.ErrorTemplate 大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15951179/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com