如何禁用Silverlight Treeview中的节点?

时间:2009-02-09 16:30:53

标签: silverlight treeview

当将Silverlight Toolkit中的Treeview数据绑定到数据源时,如何访问TreeViewItem本身以使用其IsEnabled属性?或者我们是否会失去该功能,需要使用任何自定义的hierarchicaldatatemplate来支持它?

如果我将数据绑定到自定义对象树,那么如何访问单个TreeViewItem以设置IsEnabled?理想情况下,我想通过数据绑定来做到这一点。我想知道使用ItemContainerStyle是否有效?我认为我对ItemContainerStyle,ItemTemplate等之间的关系感到有些困惑。显然,当我们将数据绑定到普通旧对象时,我们会为我们创建TreeViewItem,但是我们如何设置其属性,特别是绑定?

1 个答案:

答案 0 :(得分:3)

真正的问题是你不能在使用XAML为每个数据绑定对象自动创建的TreeViewItem上设置绑定。

各种ItemsControls,包括TreeView,允许您覆盖项目的创建,例如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

Credit转到http://www.fret1.com/blog/silverlight-data-binding-enableddisabled-items-on-combobox/

处的ComboBox示例