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