我們通過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事情。 (哦,他們希望驗證會出現在那裏...我們會關閉它)。也許嘗試在代碼中設置它,只是爲了調試是否在另一個設置時實際上被切換。 –