【发布时间】:2010-11-05 17:52:16
【问题描述】:
我的应用中有 Treeview(如上所示),我已将它与集合绑定... 现在的问题是,每当我在 Colorodo 上展开时,默认情况下 Aspen 应该被选中,这意味着每当我展开第一个项目时,Node 应该被选中..
任何想法/建议请
【问题讨论】:
-
您可以发布您为 treeView 提供的 XAML 吗?
我的应用中有 Treeview(如上所示),我已将它与集合绑定... 现在的问题是,每当我在 Colorodo 上展开时,默认情况下 Aspen 应该被选中,这意味着每当我展开第一个项目时,Node 应该被选中..
任何想法/建议请
【问题讨论】:
不幸的是,我相信您已经发现,您不能将treeViewInstance.SelectedItem 属性设置为只读。
根据记忆,每个TreeViewItem 都有一个您可以设置的IsSelected 属性。您尝试侦听项目的展开/折叠,并可能设置此属性。如果不亲自尝试,我不知道它是否是 a) 一个好的解决方案 b) 是否可行。
要获取TreeViewItem,它是集合中项目的容器,请使用
treeViewInstance.ItemContainerGenerator.ContainerFromItem(yourDataItem) as TreeViewItem;
另一个想法(我会这样做)是使用 ListBox/ListView 并伪造分层视图。创建一个视图模型控制器和项目,包装你的数据,并自己管理这一切。如果您想了解更多信息,请发表评论,我会举几个例子来帮助您。
HTH,
丹尼斯
【讨论】:
有两个apporches选择你喜欢的。 i) 探索 ItemTemplageSelector,不确定但可以使用它。
在树展开事件或鼠标捕获事件的其他方面,获取当前根节点,然后选择其索引为 rootNode.child[0]... 的第一个子节点...将其设置为 Selected True 或 Isfocused 并执行预期的操作点击它会让用户感觉它被选中了。
【讨论】: