我正在編寫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'。 –