Dot-Net
如何使用 DataTrigger 覆蓋綁定屬性
我有以下 XAML 用於顯示有關在列表視圖中選擇的項目的詳細資訊。我希望矩形在文本後面顯示標准資訊顏色,除非所選項目表示錯誤消息。下面的程式碼不能按原樣工作,總是顯示資訊顏色。如果我不
Fill為根<Rectangle />元素指定 a ,它會很好用。<Rectangle Fill="{DynamicResource {x:Static SystemColors.InfoBrushKey}}" RadiusX="4" RadiusY="4"> <Rectangle.Style> <Style TargetType="{x:Type Rectangle}"> <Style.Triggers> <DataTrigger Binding="{Binding Path=CurrentMessage.Severity" Value="Error" > <Setter Property="Fill" Value="#20FF0000" /> </DataTrigger> </Style.Triggers> </Style> </Rectangle.Style> </Rectangle>該片段沒有反映它,但實際程式碼具有相當多的嚴重性狀態級別,因此我不想為每個可能的嚴重性定義觸發器。我想要的邏輯是“使用資訊顏色,除非嚴重性是錯誤,然後使用紅色”。
我確定我誤解了 WPF 的一些基本方面,但似乎無法確定它。有人可以指出我正確的方向,以便我指定的數據觸發器在條件為真時覆蓋現有的 Fill 值嗎?
您快到了。不要將“預設”填充指定為矩形的屬性,而是在樣式中指定它:
<Rectangle RadiusX="4" RadiusY="4"> <Rectangle.Style> <Style TargetType="{x:Type Rectangle}"> <Setter Property="Fill" Value="{DynamicResource {x:Static SystemColors.InfoBrushKey}}" /> <Style.Triggers> <DataTrigger Binding="{Binding Path=CurrentMessage.Severity" Value="Error" > <Setter Property="Fill" Value="#20FF0000" /> </DataTrigger> </Style.Triggers> </Style> </Rectangle.Style> </Rectangle>