2012-05-28 121 views
2

我一直在嘗試根據數據觸發器綁定的枚舉設置WPF控件的項目源。使用數據觸發器設置WPF中的ItemsSource屬性

我一直非常不成功的,而且我不確定這是做了正確的方式:

<DataTrigger Binding="{Binding EnumSetting}" Value="Test"> 
     <Setter TargetName="control" Property="ItemsSource" Value="{Binding Model}" /> 
</DataTrigger> 

我一直在嘗試不同的版本以上。任何人都可以幫助或指引我走向正確的方向。

例如,它應該被包裹在「<」風格的標籤中,我不認爲它應該是,但我不確定爲什麼這不起作用。

謝謝。

回答

5

主要需要注意DP precedence,這意味着您不能直接在ItemsControl(或其子類)上設置ItemsSource,因爲它會覆蓋觸發器。相反,你應該使用默認的setter。

<ItemsControl> 
    <ItemsControl.Style> 
      <Style TargetType="ItemsControl"> 
       <Setter Property="ItemsSource" Value="SomeDefaultHere"/> 
       <Style.Triggers> 
        <DataTrigger ...> 
         <Setter Property="ItemsSource" Value="SomeOverrideHere"/> 
        </DataTrigger> 
       </Style.Triggers> 
      </Style> 
    </ItemsControl.Style> 
</ItemsControl> 

(你可能需要一個樣式,除非你是在一些控制模板的觸發器。)

相關問題