2012-01-19 3 views
0

my Silverlight 4 응용 프로그램에 트리 뷰가 포함되어 있습니다. 나는 HierarchicalDataTemplate로 TreeViewItems의 모양을 사용자 정의 :HierachicalDataTemplate에 의해 수정 된 TreeViewItem의 액세스 UIElement

<sdk:TreeView x:Name="TreeViewModel" ItemTemplate="{StaticResource DataTemplateTreeViewDisplayObjects}" .../> 

<sdk:HierarchicalDataTemplate x:Key="DataTemplateTreeViewDisplayObjects" ItemsSource="{Binding Children}"> 
    <Grid> 
    <Border x:Name="BorderComponent" .../> 
    </Grid> 
</sdk:HierarchicalDataTemplate> 

는 결국, 내가 UIElement에 (즉 "BorderComponent")을 모든 TreeViewItems을 통해 분석하고 접근 할 필요가있다. 이렇게 :

foreach (TreeViewItem tvi in _myTreeView.Items) 
    tvi.BorderComponent.Visibility = Visibility.Collapsed 

Item이 바운드 개체를 반환하기 때문에 분명히 작동하지 않습니다. TreeViewItem (_myTreeView.ItemContainerGenerator.ContainerFromIndex (0)) 첫 번째 얻으려면 TreeViewItem 액세스 할 수있는 경우에도 TreeViewItem HierarchicalDataTemplate에 대해, 모르는 때문에 테두리에 액세스하는 방법을 몰라. 항목을 만드는 데 사용됩니다.

모든 아이디어, 어떻게 각 "TreeViewItem"에서 "BorderComponent"- 항목에 액세스 할 수 있습니까? 사전에

감사합니다,
프랭크

답변

0

직접 UI 컴포넌트에 접근하지 않도록해야합니다, 당신은 당신의 항목에 속성에 Visibility을 결합하고 Collapsed 해당 설정할 수 있습니다.

실제로는 TreeViewItemHeaderTemplate 같은 것을 발견한다 작성 Border 당신은 아마 이렇게도 할 수있는, 데이터 템플릿에 액세스하려면, 그래서 내가 확실히 말할 수 없지만 툴킷을 사용하지 않은 . 템플릿에 FindName을 사용하면 Border을 얻을 수 있습니다.