C# 需要找出哪个MdiChild持有当前活动的控件

C# 需要找出哪个MdiChild持有当前活动的控件,c#,wpf,drag-and-drop,mdichild,mdiparent,C#,Wpf,Drag And Drop,Mdichild,Mdiparent,我有一个容器,里面有4个孩子。 每个孩子都有许多标签,这些标签的样式为正方形。 共有3行,每个孩子有3个正方形(因此为3x3)。 标签可以从一个子项拖动到另一个子项。 每个MdiChild都有一个用于包含行的StackPanel 当我执行拖放操作时,我想知道哪个MdiChild参与了拖放(原点)和拖放(目标子对象) 我只是想不出这样做的代码 我尝试过使用visualtreehelpers和getparent,但他们没有成功。当我在WPF工作时,我可以通过谷歌搜索找到的大多数页面都是关于表单的 编

我有一个容器,里面有4个孩子。 每个孩子都有许多标签,这些标签的样式为正方形。 共有3行,每个孩子有3个正方形(因此为3x3)。 标签可以从一个子项拖动到另一个子项。 每个MdiChild都有一个用于包含行的StackPanel

当我执行拖放操作时,我想知道哪个MdiChild参与了拖放(原点)和拖放(目标子对象)

我只是想不出这样做的代码

我尝试过使用visualtreehelpers和getparent,但他们没有成功。当我在WPF工作时,我可以通过谷歌搜索找到的大多数页面都是关于表单的

编辑1: 当测试我是否得到了我想要的答案时,我使用了以下代码

string TheActiveMdi = Container.ActiveMdiChild.Name;
其中“Container”是指定给我的MdiContainer的名称

出于某种原因,输入变量的值只是在我的Xaml代码中最后写入的MdiChild中的值,因此它不会返回准确的值。我将该代码放在我的Drop事件方法中

编辑2: 在drop event方法中,此代码允许我访问拖动的标签:

Label sourceLbl = e.Data.GetData("System.Windows.Controls.Label") as Label;
如果我使用此代码,我可以访问它的父级,即Stackpanel:

string LabelsParent = myObject.Parent.GetType().ToString();
MessageBox.Show(LabelsParent);
这告诉我这是一个堆叠面板

然而,让我困惑的是,如果我试图在Messagebox中打印它的名称:

MessageBox.Show(LabelsParent.Name);
然后它只返回“Stackpanel”,而如果我对sourceLbl执行相同的操作:

MessageBox.Show(sourceLbl.Name);
然后它实际上会打印它的名称,在本例中是“testSquare”

有人能解释一下或者帮我解决最初的问题吗