我们通过StatusBar中的Validation.ValidationAdornerSite显示我们的错误。通过使用ValidationAdornerSite,似乎wpf禁用了Validation.ErrorTemplate。同时使用ValidationAdornerSite和ErrorTemplate
我该怎么做才能实现ErrorTemplate的显示?我们目前有一个妥协方案,我们只在ValidationAdornersite上通过触发器将其设置在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>
这看起来相当棘手,因为它似乎是一个内部的WPF事情。 (哦,他们希望验证会出现在那里...我们会关闭它)。也许尝试在代码中设置它,只是为了调试是否在另一个设置时实际上被切换。 –