【问题标题】:How do you disable a node in the Silverlight Treeview?如何禁用 Silverlight Treeview 中的节点?
【发布时间】:2009-02-09 16:30:52
【问题描述】:

当将 Silverlight 工具包中的 Treeview 数据绑定到数据源时,您如何访问 TreeViewItem 本身以使用其 IsEnabled 属性?或者我们是否失去了该功能并需要使用任何自定义分层数据模板来支持它?

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

【问题讨论】:

    标签: silverlight treeview


    【解决方案1】:

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

    包括 TreeView 在内的各种 ItemsControl 可让您覆盖项目的创建,例如 ListBoxItem、TreeViewItem 等。您可以在代码中为这些项目的属性设置绑定。

    公共类 MyTreeView 继承树视图

    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/ 的 ComboBox 示例

    【讨论】:

      猜你喜欢
      • 2023-03-30
      • 2010-11-04
      • 1970-01-01
      • 2010-10-16
      • 1970-01-01
      • 2011-06-22
      • 1970-01-01
      • 2011-05-18
      • 2013-11-10
      相关资源
      最近更新 更多