ユースケース
XAMLのコンストラクタレベルで、TreeViewにアクセスしてExpandやSelectをしたい場合。
問題
TreeView.ItemContainerGenerator.ContainerFromItem
でContainerから情報を解決しようとしても、常にnull
が返ってきてしまい、処理できない。
対応策
BeginInvoke
を使って処理を後ろに回せばいいようです。
TreeViewItem.Dispatcher.BeginInvoke(() =>
{
TreeViewItem item = TreeView.ItemContainerGenerator.ContainerFromItem(TreeView.Items[0]) as TreeViewItem;
// TreeViewの操作...
});
おまけ
そういえば、Flexでも同じような事を苦肉の策でしたような。