WPF 動的に生成したTreeViewItemの選択アイテムを指定する方法

がわからなかった。

 

正に、な MSDNの文献を見つけてテストプログラム組んだらアッサリ実現できた。

 

方法: TreeView で TreeViewItem を検索する

 

 

この記事で自分がいかにXAMLのUIの構造、クラスを理解してないかがよくわかった。

 

 

なんとなくわかったこと

  • TreeViewItemの子要素の上にあるItemPresenterはTreeViewの子要素のとちがって、"ItemsHost"という名前の付いたテンプレートが適用されていること
  • 既定のTreeViewコントロール内のTreeViewItemのすぐ上にはStackPanelがあり、すぐ上にはItemPresenter(ItemHost)があること
  • ItemPresenterとかTreeViewItemとか実際にはあるんだけど、FrameworkElement.Template.FindName()とかでは取得できないことがある。
  • その時はVisualTreeHelperクラスのGetChild()で取得できるらしい。
  • FrameworkElement.ItemContainerGenerator.ContainerFromIndex()やFrameworkElement.ItemContainerGenerator.ContainerFromItem()でTreeViewItemとかのコントロールの要素(中身ではなく外見UI)が取得できる

 

 

 

よくわかってないこと

  • VirtualizingStackPanel
  • Containerというもの(ItemContainerとか)
  • FrameworkElement.ApplyTemplate()
  • FrameworkElement.UpdateLayout()
  • FrameworkElement.BringIntoView()
  • FrameworkElement.Template.FindName()
  • VisualTreeHelper