簡體   English   中英

從ContentControl中的WPF頁面加載內容

[英]Load content from a WPF page in ContentControl

我正在尋找一種方法來交換我的應用程序的一部分內容與預定義的頁面。 我得到了ContentControl ,但我無法復制我的頁面中的內容。 我用的代碼是

ContentControl1.Content = new PageName().Content

這給了我一個例外,說明Specified element is already the logical child of another element. Disconnect it first. Specified element is already the logical child of another element. Disconnect it first.

有什么辦法可以在ContentControl加載頁面嗎?

或者,有沒有什么方法可以使用Visual Studio設計器來設計頁面並以更容易在ContentControl加載的方式存儲它們?

最后,這將成為我的一天,但是有什么方法可以讓我在ContentControl調用方法中的內容包含在Window中?

Edit2:為了能夠加載頁面,您需要刪除內容控件並使用框架導航窗口

編輯:我再次閱讀了這個問題並意識到您使用了一個Page,以下解決方案僅適用於用戶控件。 如果您使用Page對象進行嘗試,仍會出現錯誤。

要在內容控件中加載用戶控件,您可以嘗試以下操作:

ContentControl1.Content = new UserControl();

我不認為從控件內的主窗口調用方法是個好主意,但是如果你想這樣做,你可以將Window的一個實例傳遞給頁面構造函數並使用它來從主窗口調用方法。

對於能夠處理用戶控件/內容的“事件”的窗口,您必須意識到窗口越少,需要預先知道可以引發哪些事件。 當切換大量頁面時,這可能會導致窗口上的大量處理程序被調用。

更好的設計是將數據(模型)存儲在窗口中,並將設計/代碼邏輯存儲在操縱數據的用戶控件中。 您可以通過將數據分配給Window的DataContext屬性來輕松獲取數據。 然后,加載的UserControl的DataContext將返回數據。

此設置將使您獲得更好的可維護代碼。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM