Con*_*cer 7 c# wpf treeview itemcontainergenerator
我已经阅读了关于这个主题的几个主题,但找不到任何可以做我想做的事情.我有一个树视图绑定到一组分层的对象.这些对象中的每一个都代表地图上的图标.当用户单击地图上的其中一个图标时,我想在树状视图中选择项目,将焦点放在其上,然后将其滚动到视图中.map对象具有绑定到treeview的对象列表.在示例中,Thing是绑定到树的对象的类型.
public void ScrollIntoView(Thing t)
{
if (t != null)
{
t.IsSelected = true;
t.IsExpanded = true;
TreeViewItem container = (TreeViewItem)(masterTreeView
.ItemContainerGenerator.ContainerFromItem(t));
if (container != null)
{
container.Focus();
LogicalTreeHelper.BringIntoView(container);
}
}
}
Run Code Online (Sandbox Code Playgroud)
到目前为止,无论我尝试过什么,容器总是为空.有任何想法吗?
这个项目实际上是孩子的masterTreeView
吗?
这可能实际上非常困难,因为TreeViewItems
它们都是ItemsControls
自己的ItemContainerGenerator
,这意味着你应该只能从直接的父节点ItemContainerGenerator
而不是从根节点获取容器.
一些递归函数,首先将层次结构上传到根,然后在ui级别反转此路由,总是获取项目的容器可能会有效,但是您的数据项需要引用它们的逻辑父数据对象.