0
在我開始之前,我的最終目標是爲所有控件提供默認的工具提示樣式,當工具提示所在的控件存在驗證錯誤時,其正常邊框會變爲紅色正在顯示。在樣式中綁定屬性附加屬性
所以ToolTip有一個PlacementTarget屬性,它是顯示工具提示的控件。有一個Validation.HasError附加屬性,它在PlacementTarget控件發生數據綁定錯誤時被設置。比如我有一個文本框,並在文本框的風格,我可以做到這一點:
<Style TargetType="{x:Type TextBox}">
<Style.Triggers>
<Trigger Property="Validation.HasError" Value="True">
<Setter Property="ToolTip">
<Setter.Value>
<ToolTip Content="{Binding RelativeSource={RelativeSource Self}, Path=PlacementTarget.(Validation.Errors)[0].ErrorContent}"/>
現在,我可以做的工具提示風格的紅色邊框及以上設置在扳機,但我寧願不必在每個控件的樣式觸發器中都這樣做,所以我希望我的ToolTip樣式可以自己處理這個功能。
我已經試過各種事情,最近這(如果有一個錯誤的轉換器基本上返回紅,黑如果不):
<Style TargetType="{x:Type ToolTip}">
<Setter Property="BorderBrush" Value="{Binding Path=PlacementTarget.Validation.HasError, RelativeSource={RelativeSource Self}, Converter={StaticResource ToolTipBorderConverter}}"/>
</Style>
但是,從給出的錯誤,它看起來像是一個試圖讓
System.Windows.Data Error: 40 : BindingExpression path error: 'Validation' property not found on 'object' ''TextBox' (Name='')'. BindingExpression:Path=PlacementTarget.Validation.HasError; DataItem='ToolTip' (Name=''); target element is 'ToolTip' (Name=''); target property is 'BorderBrush' (type 'Brush')
我也試過類似:
<Style TargetType="{x:Type ToolTip}">
<Style.Triggers>
<Trigger Property="PlacementTarget.Validation.HasError" Value="True">
<Setter Property="BorderBrush" Value="Red"/>
上文本框稱爲驗證,而不是附加屬性的實際屬性
但是我得到一個錯誤,說我不能像這樣嵌套觸發器的屬性。
有沒有辦法完成我在這裏要做的事情?
謝謝,同時發現這個權利! – StuartMorgan