在我的Windows Phone應用程序(VB/XAML)中,我無法在後面的代碼中創建XAML控件,當返回頁面時。返回頁面並在代碼後面添加代碼時出錯
基本上我的頁面在崩潰時試圖做的是根據datacontext創建一些控件。控件首先被正確創建,然後當頁面被留下並返回到控件時將不再創建(不管是否使用相同的數據對象來填充頁面)。這是崩潰的線路:
ItemStack1.Children.Add(AnswerPanel1)
我剛剛得到一個泛型「System.InvalidOperationException」錯誤。
我已經檢查過,到目前爲止,一切都如我所料 - 無論頁面如何導航,數據對象都可以正確填充。我也試圖通過在嘗試添加它之前刪除AnswerPanel1項目來縮小問題的範圍。我懷疑這個應用程序是從上次打開的時候'記住'這個頁面的,這導致我'翻倍'了一些東西。
如果我在該行附近使用「Try ... Catch」,頁面中缺少控件(這對我來說意味着控件不存在,我認爲是(重新)創建它的原因是失敗第2次
我瀏覽網頁與此:
NavigationService.Navigate("/CasebookSelectCasePage.xaml", sItem)
...它使用一個小「助手」類傳遞sItem對象,但在類中它通常導航,這樣:
service.Navigate(New Uri(page, UriKind.Relative))
我想我錯過了一些基本的或顯而易見的東西......我是否需要在向後導航到首頁時刷新頁面內存不足?
從故障排除中獲取更多信息:似乎只有在使用與之前發生錯誤的相同對象重新填充頁面時(例如,發送object1第一次,它完美的作品...發送object2,它工作正常...但如果我嘗試再次發送object1或object2(回到上一頁,然後再次點擊該項目啓動新頁面)我得到錯誤。在設備上,錯誤消息的第一部分是「元素已經是另一個元素的子元素」。 – pumpkinszwan
我想我已經找到了問題,但沒有答案......這是我傳遞給新頁面的對象,這是問題所在。我想我需要創建一個新的副本,然後再傳遞它(我可以通過對我傳遞的對象進行硬編碼來工作,但我不知道如何創建一個正確類型的新對象來傳遞,而不是傳遞相同的複製像以前一樣。例如,點擊的對象是「Object1」,而不是傳遞Object1我想傳遞一個新的Object1(它繼承Object,但我不知道在運行時是否需要Object1或Object2等 - 但它們是全部從對象繼承) – pumpkinszwan
所以,你在頁面A.然後你去到頁面B.然後你回到頁面A並崩潰了?爲什麼你再次重新生成控件?你有沒有嘗試過嗎?頁面A應該被緩存,或者在將新項目添加到ItemStack之前,先嚐試清除它 –