Dot-Net

DataTrigger 未觸發

  • June 11, 2018

我有以下 xaml:

   <DockPanel>
   <DockPanel>
       <CheckBox IsChecked="{Binding Path=Test}" />
       <CheckBox IsChecked="{Binding Path=Test}" />
   </DockPanel>
   <DockPanel DockPanel.Dock="Left" Width="10" Background="Blue">
       <DockPanel.Style>
           <Style>
               <Style.Triggers>
                   <DataTrigger Binding="{Binding Path=Test}" Value="True">
                       <Setter Property="DockPanel.Background" Value="Yellow" />
                   </DataTrigger>
               </Style.Triggers>
           </Style>
       </DockPanel.Style>
   </DockPanel>
</DockPanel>

現在 - 2 個複選框正確連結 - 檢查一個將檢查另一個 - 但數據觸發器根本沒有觸發。

我究竟做錯了什麼?

這裡的問題是Property Value Precedence

您目前直接在 DockPanel 上將背景設置為藍色。此顯式屬性將覆蓋觸發器設置的任何值。

相反,您必須將原始“背景”設置為樣式中的設置器。

<DockPanel DockPanel.Dock="Left" Width="10">
   <DockPanel.Style>
       <Style>  
           <Setter Property="DockPanel.Background" Value="Blue" /> 
           <Style.Triggers>                    
               <DataTrigger Binding="{Binding Path=Test}" Value="True">                        
                   <Setter Property="DockPanel.Background" Value="Yellow" />                       
               </DataTrigger>
           </Style.Triggers>            
       </Style>        
   </DockPanel.Style>    
</DockPanel></DockPanel>

引用自:https://stackoverflow.com/questions/1635018