2012-01-19 10 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> 

は最終的に、私はすべてのTreeViewItemsを解析し、UIElement(すなわち「BorderComponentに」)にアクセスする必要があります。同様に:

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

アイテムがバインドされたオブジェクトを返すので、明らかにこれは機能しません。 TreeViewItem(最初のTreeViewItemを取得するためにTreeViewItemとして_myTreeView.ItemContainerGenerator.ContainerFromIndex(0))にアクセスできる場合でも、TreeViewItemはHierarchicalDataTemplateについて認識していないため、Borderにアクセスする方法がわかりません。アイテムの作成に使用されます。

どのように私は "TreeViewItemの" BorderComponent "項目にアクセスすることができますか?あなたが直接、UIコンポーネントにアクセスしないようにする必要があり、事前に

おかげで、
フランク

答えて

0

は、あなたは自分のアイテムのプロパティにVisibilityを結合して、Collapsedにそれを設定することができます。

が実際にそれがTreeViewItemHeaderTemplateのようなもので見つかるはず作成Borderあなたはおそらくこれも同様に行うことができ、データテンプレートにアクセスするには、私はので、私は確かにあなたを伝えることはできませんけれどもToolkitを使用していません。テンプレート上でFindNameを使用すると、Borderを取得することができます。

関連する問題