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

C# 如何获取项目绑定到的集合的名称?,c#,wpf,data-binding,C#,Wpf,Data Binding,很抱歉没有为此发布任何代码,但我所有的努力似乎都无济于事 我需要从mouseDown事件处理程序中获取textblock绑定到的observableCollection的名称,这样我就可以对数据执行一些操作,有什么方法可以做到这一点吗 我已经将textblock的标记设置为{binding},所以我得到了textblock绑定到的整个对象。除此之外,我不知道下一步该去哪里 更新: 原因是我有2个multiselect treeview,带有一个Hierarchial数据模板,每个模板共享同一个t

很抱歉没有为此发布任何代码,但我所有的努力似乎都无济于事

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

我已经将textblock的标记设置为{binding},所以我得到了textblock绑定到的整个对象。除此之外,我不知道下一步该去哪里

更新:

原因是我有2个multiselect treeview,带有一个Hierarchial数据模板,每个模板共享同一个treeview,但绑定到不同的可观察集合

我的multiselect的工作方式是,如果集合中该项的IsSelected值为true,则将样式应用于每个树视图

现在,我正在使用datatemplate中textblock的Mousedown事件处理程序来获取我正在处理的项,但有些项可以同时在两个集合中。我需要知道设置IsSelected值的项目。使用Binding{tag}我得到了需要设置的项,但不是它所在的集合

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


作为旁注,我还需要能够隐藏树视图的默认选定样式,因为它没有使用,而且会让人困惑。

您无法确定项目所在的集合,但可以确定用户单击的树视图。然后,您可以通过了解TreeView来获取集合,这将解决您当前的问题。

您所说的observableCollection的“名称”是什么意思?变量的名称,我有一个名为Available的集合和一个名为Selected的集合,我只需要一些方法来确定我在其中选择的项目是哪一个集合。变量名在运行时不可用。如果你发布你的实际目标,也许我们可以帮助你找到另一种方法来实现它。@Gabe谢谢,我可能走错了方向,解决这个问题的时间太长了lolI尝试了这个,这里的问题是treeview的GotFocus事件是在层次数据模板中Textblock的MouseDown事件之后触发的:(除了GotFocus,还有其他方法吗?@Purplegoldfish:您不需要
GotFocus
事件。一旦您有了
TextBlock
,您就可以向上跟随它的
Parent
属性(您可能需要使用
VisualTreeHelper.GetParent
)直到你到达一个或另一个
TreeView
。谢谢,我会尝试一下,看看我能得到什么