gpt4 book ai didi

wpf - 同时使用 ValidationAdornerSite 和 ErrorTemplate

转载 作者:行者123 更新时间:2023-12-04 14:35:36 35 4
gpt4 key购买 nike

我们通过 StatusBar 中的 Validation.ValidationAdornerSite 显示我们的错误。随着 ValidationAdornerSite 的使用,wpf 似乎禁用了 Validation.ErrorTemplate。

怎么做才能同时实现ErrorTemplate的显示?我们目前有一个折衷方案,我们只在 ValidationAdornersite 上显示内容,方法是通过 Trigger 在 MouseOver 上设置它,这样只要鼠标在控件之外,就会显示 ErrorTemplate。

 <Style x:Key="ValidationStyle">
<Setter Property="Validation.ErrorTemplate"
Value="{StaticResource Default_ErrorTemplate}" />
<Style.Triggers>
<Trigger Property="UIElement.IsMouseOver"
Value="True">
<Setter Property="Validation.ValidationAdornerSite"
Value="{Binding ValidationAdornerSite,RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=Window}}" />
</Trigger>

<Trigger Property="Validation.HasError"
Value="true">
<Setter Property="FrameworkElement.ToolTip"
Value="{Binding RelativeSource={x:Static RelativeSource.Self},
Path=(Validation.Errors)[0].ErrorContent}" />
</Trigger>
</Style.Triggers>
</Style>

最佳答案

在查看了 ILSpy 验证是如何实现的之后,我得出的结论是,这种行为是无法改变的。

做类似 ValidationAdornerSite 和 ValidationAdornerSiteFor 的事情要容易得多。定义两个具有相似行为的附加依赖项。然后你使用它而不是标准的 adonersite Prop :

 <Setter Property="gw:FormValidation.ValidationSite"
Value="{Binding ValidationAdornerSite,RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=Window}}" />

...................................
 <TextBlock x:Name="PART_ValidationAdornerSite"
HorizontalAlignment="Center"
Text="{Binding RelativeSource={RelativeSource Self}, Path=(gw:FormValidation.ValidationSiteFor).(Validation.Errors)[0].ErrorContent, NotifyOnTargetUpdated=True}"
TargetUpdated="PART_ValidationAdornerSite_TargetUpdated"
TextBlock.Foreground="Red"/>

...................................
this.ValidationAdornerSite = this.PART_ValidationAdornerSite;

这是一个持有 dp“ValidationAdornerSite”的窗口。请注意,此解决方案可以简化,但它符合我的需要,因为我经过验证的控件位于不知道窗口(外壳)的模块 (PRISM) 中。

关于wpf - 同时使用 ValidationAdornerSite 和 ErrorTemplate,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8037032/

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