0

我正在开发一个 WPF 应用程序,该应用程序包含一个实际上是 MainWindow.xaml 的包装器 UI,并且每次用户选择移动到应用程序的不同部分时,其中的内容 (ContentPresenter) 都会更改。

当用户返回主要内容时,我希望应用程序不要每次都对其进行初始化,而是以某种方式将其保存在内存中,并在用户单击“主页”按钮时将其恢复。

在当前状态下,当返回“主页”部分时,主页视图会一遍又一遍地初始化,这会导致应用程序有点慢。我的问题是:有没有办法以某种方式将该用户控件保留在内存中,以便我能够快速恢复它?

谢谢!

4

2 回答 2

1

正如@Matt 建议的那样,隐藏当然是一种选择。另一种方法是探索奇妙的框架世界(Prism、Caliburn、Caliburn.Micro、...)

这些在管理 WPF 应用程序方面提供了极大的帮助。

本质上,您需要保留对 ViewModel 的引用,它是 mainviewmodel 或 mainview 中的一个集合,用于跟踪加载的视图模型。

于 2012-03-28T13:54:55.293 回答
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 中,我有实际内容和另一个Visibility属性,false当内容不是当前内容时,true如果是,则设置为。

感谢所有帮助者!

于 2012-03-28T16:12:54.290 回答