需要找出哪个MdiChild持有当前有效的控件

时间:2015-12-03 15:53:47

标签: c# wpf drag-and-drop mdichild mdiparent

我有一个里面有4个孩子的MdiContainer。 每个孩子都有许多标签,这些标签被称为正方形。 有3行,每个孩子有3个方格(所以3x3)。 标签可以从一个孩子拖到另一个孩子。 每个MdiChild都有一个StackPanel,用于包含行。

当我执行拖动或放下时,我想知道哪个MdiChild是拖动(原点)和掉落(目标子)的参与者。

我只是弄清楚要执行此操作的代码。

我尝试过使用visualtreehelpers和getparent但他们还没有完成这个伎俩。我通过谷歌搜索找到的大多数页面处理表格,而我在WPF工作。

编辑1: 在测试我是否得到了我想要的答案时,我使用了这段代码

string TheActiveMdi = Container.ActiveMdiChild.Name;

其中“Container”是我的MdiContainer的名称。

由于某种原因,放入变量的值就是MdiChild中最后一个用Xaml代码编写的值,因此它没有返回准确的值。我将该代码放在我的Drop事件方法中。

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

Label sourceLbl = e.Data.GetData("System.Windows.Controls.Label") as Label;

如果我使用此代码,我可以访问它的父代,它是一个Stackpanel:

string LabelsParent = myObject.Parent.GetType().ToString();
MessageBox.Show(LabelsParent);

这告诉我它是一个Stackpanel。

但令我困惑的是,如果我尝试在Messagebox中打印它的名字:

MessageBox.Show(LabelsParent.Name);

然后它只返回“Stackpanel”,而如果我对sourceLbl做同样的事情:

MessageBox.Show(sourceLbl.Name);

然后它实际上会打印它的名字,在本例中是“testSquare”

任何人都可以解释这个或帮我解决我最初的问题吗?

0 个答案:

没有答案