我正在编写C#XAML Windows应用商店应用。我的网页上有一个网格。我向该网格添加一个子元素,然后立即尝试获取此子元素的父元素。父项为空。似乎没有办法从子元素获取父网格。这里有一些代码来展示我在做什么。这不是那么复杂:如何在Windows应用商店应用中获得FrameworkElement的父代
这是添加子元素,并尝试获取父元素的代码:
FrameworkElement FieldView = Field.getView(true);
ContentPanel.Children.Add(FieldView);
Panel theParent = VisualTreeHelper.GetParent(FieldView) as Panel;
FrameworkElement theotherparent = (FrameworkElement)FieldView.Parent;
的ContentPanel是页面上的网格。 FieldView是一个UserControl。该页面显示得很好,并且在任何代码中都没有例外。唯一的错误是我无法获得FieldView的父项。它是空的。
发布之前,我做了一个快速测试,以确保UserControl不是问题。使用TextBlock显示相同的问题:
TextBlock Derf = new TextBlock();
PageGroup.ContentPanel.Children.Add(Derf);
Panel theParent2 = VisualTreeHelper.GetParent(Derf) as Panel;
FrameworkElement theotherparent2 = (FrameworkElement)Derf.Parent;
父属性从未在Windows应用商店应用中设置?此代码在Window Phone 8上运行良好。
感谢您的任何帮助。
戴夫
在尝试获取“父”之前,请确保“Panel”已被加载。你可以通过将你的逻辑添加到'Loaded'事件来做到这一点。 –
谢谢。我发现这个问题是因为我写的代码在我离开页面时(在OnNavigatingFrom事件中)尝试从父项中移除子项。该页面在失败之前可见且正在工作。我会尝试你的建议,以确认它从来没有工作。 –
另一个需要检查的问题是'GetParent'调用在投射到'Panel'之前是'null'。 –