2009-02-09 54 views
1

將Silverlight Toolkit中的Treeview數據綁定到數據源時,如何訪問TreeViewItem本身以使用其IsEnabled屬性?或者我們是否失去了這種功能,需要使用任何自定義的hierarchicaldatatemplate來支持它?如何在Silverlight TreeView中禁用節點?

如果我將數據綁定到自定義對象的樹上,那麼如何訪問單個TreeViewItem來設置IsEnabled?理想情況下,我想通過數據綁定來做到這一點。我想知道是否使用ItemContainerStyle會工作?我想我對ItemContainerStyle,ItemTemplate等之間的關係有點困惑。當我們綁定到普通的舊對象時,TreeViewItem是爲我們創建的,但是我們如何設置它的屬性,特別是綁定?

回答

3

真正的問題是無法爲使用XAML爲每個數據綁定對象自動創建的TreeViewItem設置綁定。

包括TreeView在內的各種ItemsControl讓您可以重寫該項目的創建,例如ListBoxItem,TreeViewItem等。您可以在代碼中爲這些項目的屬性設置綁定。

公共類MyTreeView 繼承的TreeView

Protected Overrides Sub PrepareContainerForItemOverride(ByVal element As System.Windows.DependencyObject, ByVal item As Object) 

    MyBase.PrepareContainerForItemOverride(element, item) 

    Dim tvi As TreeViewItem = element 
    Dim bindIsEnabled As New Binding("IsEnabled") 
    bindIsEnabled.Mode = BindingMode.OneWay 
    tvi.SetBinding(TreeViewItem.IsEnabledProperty, bindIsEnabled) 

End Sub 

幸得組合框例如在http://www.fret1.com/blog/silverlight-data-binding-enableddisabled-items-on-combobox/

相關問題