找回密码
 立即注册

QQ登录

只需一步,快速开始

queena
金牌服务用户   /  发表于:2024-12-12 16:21  /   查看:59  /  回复:5
1金币
您好,我在wpf中使用C1TreeView控件时,需要通过代码控制选中树上的一个节点。树是通过this.tree.DataContext 绑定  List<DataNode>对象生成的结构。DataNode中有 ChildNode属性List<DataNode>这种方式构成的4级左右的树行结构。
我现在如何在已知最末级的一个对象的情况下。让树上这个节点展开并选中。
我目前使用方法

Item.IsExpanded = true; 展开
Item.IsSelected = true;选中
我获取的对象是DataNode,要转换成C1TreeViewItem才能使用这些方法。
为此我需要递归到根节点通过ItemContainerGenerator.ContainerFromItem来逐级获取每层的C1TreeViewItem。
我有两个问题
1 目前情况我要想选中节点,好像必须先调用IsExpanded把这个节点的父级递归到根节点的节点全部展开才能选中。而且这个操作我在同一个事件里写不能实现,要先通过一个事件展开,再调用选中才能实现。
2 我的需求其实就是,在界面的一个按钮事件需要直接选中树上大概第四级的一个节点,有更简便的方法么?


5 个回复

倒序浏览
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2024-12-12 18:17:54
沙发
没有看明白你的具体需求。能否上传一个demo项目来说明一下。可能讨论起来更清晰一些
回复 使用道具 举报
queena
金牌服务用户   /  发表于:2024-12-13 09:17:42
板凳
这个是根据我需求简化的示例,实际应用比这个更复杂一些。我要实现的功能其实很简单。
就是通过一个事件选中树上的节点



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
queena
金牌服务用户   /  发表于:2024-12-13 09:28:26
地板
实际应用中我的树的层级更多,我是希望有没有简单的方法实现这种功能。
以这个demo来说我现在要选中Swimming我需要先遍历找到这个节点。然后我还要向上找到它的父级对象,(如果不止两级的话)父级的父级,一直到最顶层。这个时候我找到的每级对象都是sport。我需要通过 tree.ItemContainerGenerator.ContainerFromItem(sport)获取当前节点的C1TreeViewItem对象。然后才能调用到IsExpanded或者IsSelected的属性。
而且IsSelected=true的时候还必须保证这个节点是展开的。
回复 使用道具 举报
queena
金牌服务用户   /  发表于:2024-12-13 10:00:33
5#
本帖最后由 queena 于 2024-12-13 10:02 编辑

我在实际使用测试后发现,一个树如果加载后没有展开过,parentItem.ItemContainerGenerator.ContainerFromItem(item)调用这个方法时,即使集合了有这个对象也无法获得到C1TreeViewItem对象




本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2024-12-13 19:10:51
6#
收到,目前的FindItem方法无法用于绑定场景,我们再调查一下有没有别的办法
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部