我有一个里面有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”
任何人都可以解释这个或帮我解决我最初的问题吗?