当将Silverlight Toolkit中的Treeview数据绑定到数据源时,如何访问TreeViewItem本身以使用其IsEnabled属性?或者我们是否会失去该功能,需要使用任何自定义的hierarchicaldatatemplate来支持它?
如果我将数据绑定到自定义对象树,那么如何访问单个TreeViewItem以设置IsEnabled?理想情况下,我想通过数据绑定来做到这一点。我想知道使用ItemContainerStyle是否有效?我认为我对ItemContainerStyle,ItemTemplate等之间的关系感到有些困惑。显然,当我们将数据绑定到普通旧对象时,我们会为我们创建TreeViewItem,但是我们如何设置其属性,特别是绑定?
答案 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示例