访问已由层次结构数据模板修改的TreeViewItem中的UIElement
本文关键字:修改 TreeViewItem 中的 UIElement 层次结构 数据 访问 | 更新日期: 2023-09-27 18:20:41
我的Silverlight 4应用程序包含一个树视图。我已经用层次结构数据模板定制了TreeViewItems的外观:
<sdk:TreeView x:Name="TreeViewModel" ItemTemplate="{StaticResource DataTemplateTreeViewDisplayObjects}" .../>
<sdk:HierarchicalDataTemplate x:Key="DataTemplateTreeViewDisplayObjects" ItemsSource="{Binding Children}">
<Grid>
<Border x:Name="BorderComponent" .../>
</Grid>
</sdk:HierarchicalDataTemplate>
最终,我需要解析所有TreeViewItems并访问一个UIElement(即"BorderComponent")。像这样:
foreach (TreeViewItem tvi in _myTreeView.Items)
tvi.BorderComponent.Visibility = Visibility.Collapsed
显然这不起作用,因为Items将返回绑定对象。即使我可以访问TreeViewItem(_myTreeView.ItemContainerGenerator.ContainerFromIndex(0)作为TreeViewItem来获取第一个),我也不知道如何访问Border,因为TreeViewItem不知道用于创建项的层次结构数据模板。
你知道我如何访问每个TreeViewItem中的"BorderComponent"项吗?
提前感谢,
Frank
您应该避免直接访问UI组件,只需将Visibility
绑定到项上的属性并将其设置为Collapsed
即可。
要真正访问Border
,你可能也可以这样做,创建它的数据模板应该在TreeViewItem
的HeaderTemplate
中找到,不过我还没有使用Toolkit,所以我不能肯定地告诉你。使用模板上的FindName
,您可能可以获得Border
。