2016-10-11 32 views
0

我有一個ViewModel,其中包含一個名爲AllNodesAndEntries的可觀察集合。每個項目都有一個布爾屬性IsEnabled。現在我想顯示TreeView中的項目,並將每個TreeViewItem的IsEnabled屬性綁定到ViewModel基礎項目的IsEnabled屬性。 我該怎麼做?將TreeViewItem.IsEnabled綁定到每個TreeViewItem的ViewModel屬性

這是我的TreeView。有兩種不同類型的項目(NodeEntry),所以我有一個分層和一個正常的數據模板。

<TreeView ItemsSource="{Binding AllNodesAndEntries}"> 
     <TreeView.Resources> 
      <HierarchicalDataTemplate ItemsSource="{Binding Children}" DataType="{x:Type local:Node}"> 
       <TextBlock Text="{Binding Name}"/> 
      </HierarchicalDataTemplate> 
      <DataTemplate DataType="{x:Type local:Entry}"> 
       <TextBlock Text="{Binding Name}""/> 
      </DataTemplate> 
     </TreeView.Resources> 
     <TreeView.ItemContainerStyle> 
      <Style TargetType="{x:Type TreeViewItem}"> 
       <!-- How do I bind to TreeViewItem.IsEnabled to IsEnabled? --> 
      </Style> 
     </TreeView.ItemContainerStyle> 
    </TreeView> 

看來我不能做到這裏面TreeView.ItemContainerStyle,因爲我只能定義setter方法。但是setter不允許綁定值...

+0

setters確實允許綁定值...你如何編寫綁定? – ASh

+0

好吧,我認爲允許的語法只是在打字時彈出的。當我輸入「Value =」「'時,它只顯示」真「和」假「。獲得的教訓,謝謝! – Kjara

回答

1

使用setter將「IsEnabled」屬性綁定到每個TreeViewItem的「IsEnabled」項屬性。

<TreeView.ItemContainerStyle> 
    <Style TargetType="{x:Type TreeViewItem}"> 
     <Setter Property="IsEnabled" Value="{Binding IsEnabled}"/> 
    </Style> 
</TreeView.ItemContainerStyle> 
相關問題