如何获取项目绑定的集合的名称?

Posted

技术标签:

【中文标题】如何获取项目绑定的集合的名称?【英文标题】:How to get the name of the collection an item is bound to? 【发布时间】:2011-07-11 00:51:47 【问题描述】:

很抱歉没有为此发布任何代码,但我所有的努力似乎都没有结果。

我需要从 mouseDown 事件处理程序中获取一个文本块绑定到的 observableCollection 的名称,这样我就可以对数据执行一些操作,有什么办法吗?

我已将文本块的标记设置为 binding,因此我将整个对象取回了文本块所绑定的对象。除此之外,我不确定下一步该去哪里。

更新:

原因是我有 2 个多选树视图,具有层次结构的数据模板,每个模板共享相同的树视图,但绑定到不同的可观察集合。

如果我的集合中该项目的 IsSelected 值为 true,则我的多选工作方式是对每个树视图应用样式。

现在我在我的数据模板中使用文本块的 Mousedown 事件处理程序来获取我正在处理的项目,但有些项目可以同时在两个集合中。我需要知道要在哪个项目上设置 IsSelected 值。使用 Bindingtag 我得到了我需要设置的项目,但没有得到它所在的集合。

我使用 Mousedown 作为事件处理程序,因为如果您单击一个项目以选择它,然后再次单击它需要取消选择,并且树视图事件处理程序似乎不允许这种情况发生(SelectedItemChanged 等)。

作为旁注,我还需要能够隐藏 Treeview 的默认选定样式,因为它没有被使用并且它会变得混乱。

【问题讨论】:

observableCollection 的“名称”是什么意思? 变量的名称,我有一个名为“可用”的集合和一个名为“已选”的集合,我只需要某种方法来确定我在其中选择项目的集合。 变量名在运行时不可用。如果您发布您的实际目标,也许我们可以帮助您找到另一种实现目标的方法。 @Gabe 谢谢,我可能走错了路,解决这个问题太久了,哈哈 【参考方案1】:

您无法确定某个项目在哪个集合中,但您可以确定用户单击了哪个 TreeView。然后您可以通过了解 TreeView 来获取该集合,这应该可以解决您当前的问题。

【讨论】:

我试过这个,这里的问题是树视图的 GotFocus 事件在层次数据模板中的 Textblock 的 MouseDown 事件之后触发 :( 除了 GotFocus 之外还有其他方法可以做到这一点吗? @Purplegoldfish:您不需要GotFocus 事件。拥有TextBlock 后,您可以向上跟踪其Parent 属性(您可能需要使用VisualTreeHelper.GetParent),直到到达TreeView 中的一个或另一个。 谢谢,我会去看看我在哪里

以上是关于如何获取项目绑定的集合的名称?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 mongoDB 的集合数组中获取字段名称?

如果我只知道 python 中的绑定方法,如何获取类的名称? [复制]

获取可绑定集合中项目的索引

如何获取我的数据库的集合名称列表

如何获取我的数据库的集合名称列表

如何从数据网格中获取已排序的项目源