gpt4 book ai didi

WPF 验证控制模板重叠

转载 作者:行者123 更新时间:2023-11-30 23:47:23 25 4
gpt4 key购买 nike

我有一个带有控件模板的用户控件来显示验证错误,验证模板:

<ControlTemplate x:Key="TextBoxPropertyValidationTemplate">
<StackPanel>
<Border BorderBrush="Red" BorderThickness="1">
<AdornedElementPlaceholder x:Name="MyAdorner" />
</Border>

<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Image Grid.Column="0" MaxHeight="16" MaxWidth="16"
Source="{Binding Source={StaticResource ValidationIcon}, Converter={StaticResource UriConverter}}"
Margin="1" RenderOptions.BitmapScalingMode="HighQuality"
VerticalAlignment="Center" HorizontalAlignment="Center" />
<TextBlock VerticalAlignment="Center" HorizontalAlignment="Left"
Text="{Binding ElementName=MyAdorner, Path=AdornedElement.(Validation.Errors)[0].ErrorContent}"
TextWrapping="Wrap" Grid.Column="1" FontSize="10" Foreground="Red" />
</Grid>

</StackPanel>
</ControlTemplate>

而且我似乎无法解决一个看起来像这样的相当恼人的问题:

validation

我一直在尝试使用用户控件和模板上的边距,还有一些 Height=Auto 等,但所有这些都没有真正的帮助。有什么想法吗?

如果这有助于主用户控件(嵌套有验证的控件)位于带有 AdornerDecorator 的 TabItem 中。

任何帮助表示赞赏。

最佳答案

我会说这是因为您的错误消息在 AdornerLayer 上。 ,它不参与与您的控件相同的布局。 MSDN says “装饰器的渲染独立于装饰器绑定(bind)到的 UIElement 的渲染。”这就是为什么信息只是放在一切之上的原因。

您可以将错误文本放入原始模板中,根据Validation.HasError隐藏它并以这种方式将其包含在布局过程中。

但是,如果发生验证错误,更改控件的布局可能不是最好的方法。您可以考虑在工具提示中提供其他信息。

关于WPF 验证控制模板重叠,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6516120/

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