2012-03-28 27 views
0

我的工作包含的包裝用戶界面,實際上是MainWindow.xaml和其中的內容(ContentPresenter)WPF應用程序初始化得到獲取每次改變用戶選擇移動到應用程序的不同部分。創建WPF中的靜態視圖,不會每次

當用戶返回到主內容,我希望應用程序不能每次初始化,但在內存莫名其妙地維護它,並恢復它當上「主頁」按鈕,用戶點擊。

在當前狀態下,主視圖被初始化一遍又一遍的移動回「家」的部分,這會導致應用程序是有點兒慢時。我的問題是:有沒有辦法在內存中保存用戶控件,以便我能夠快速恢復它?

謝謝!

+1

難以完全遵循你正在嘗試做的事情,但是你不能將「家庭」內容保存在一個單獨的控制中,只是隱藏它嗎? – 2012-03-28 13:52:41

+0

根據用戶按下的按鈕進行替換的內容實際上綁定到MainWindow.xaml中的ContentPresenter,當用戶單擊另一個工作流按鈕時,內容被替換爲用戶點擊的內容,但我希望隱藏「家庭」內容,並且每次用戶返回到「主頁」屏幕時都不會丟棄和重建。如果我使用綁定,如何隱藏它而不處理它? – 2012-03-28 14:05:20

+0

你不能將UserControl保存在一個私有變量中? – Paparazzi 2012-03-28 14:24:18

回答

0

最終我決定將ContentControl轉換爲ItemsControl,然後只隱藏除活動內容之外的所有內容控件。

這裏是我的代碼片段:

<ItemsControl ItemsSource="{Binding ViewModels}"> 
     <ItemsControl.ItemsPanel> 
      <ItemsPanelTemplate> 
       <Grid /> 
      </ItemsPanelTemplate> 
     </ItemsControl.ItemsPanel> 
     <ItemsControl.ItemTemplate> 
      <DataTemplate> 
       <ContentControl Visibility="{Binding Visibility}" Content="{Binding ViewModel}" /> 
      </DataTemplate> 
     </ItemsControl.ItemTemplate> 
    </ItemsControl> 

在我的ViewModel我有實際的內容和設置爲false當內容是不是當前和true如果它是另一個Visibility財產。

感謝所有的幫手!

+0

如上所述,我已經解決了該問題。感謝所有你的幫手! :) – 2012-04-01 07:24:27

1

隱藏是@Matt建議的一種選擇。另一方法是資源管理器框架(棱鏡,卡利,Caliburn.Micro,...)

的完美的事情,世界上那些在管理WPF應用程序提供一個很大的幫助。

在本質上,你需要不斷的視圖模型,在跟蹤加載的ViewModels的mainviewmodel或MAINVIEW集的引用。