我的Silverlight 4应用程序包含树视图。我已经使用HierarchicalDataTemplate定制了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>
最终,我需要解析所有TreeViewItem并访问UIElement(即“BorderComponent”)。像这样:
foreach (TreeViewItem tvi in _myTreeView.Items)
tvi.BorderComponent.Visibility = Visibility.Collapsed
显然这不起作用,因为Items将返回绑定对象。即使我可以访问TreeViewItem(_myTreeView.ItemContainerGenerator.ContainerFromIndex(0)作为TreeViewItem来获取第一个),我也不知道如何访问Border,因为TreeViewItem不知道HierarchicalDataTemplate,即用于创建项目。
任何想法,我如何在每个TreeViewItem中访问“BorderComponent”-item?
提前致谢,
弗兰克
答案 0 :(得分:0)
您应该避免直接访问UI组件,您只需将Visibility
绑定到商品的属性并将其设置为Collapsed
。
要实际访问Border
您也可以这样做,创建它的数据模板应该是HeaderTemplate
的{{1}},我没有虽然使用了工具包,但我无法确定。在模板上使用TreeViewItem
,您可以获得FindName
。