Создание статического представления в WPF, которое не будет инициализироваться каждый раз

Я работаю над приложением WPF, которое содержит пользовательский интерфейс оболочки, который на самом деле является MainWindow.xaml, и содержимое в нем (ContentPresenter) изменяется каждый раз, когда пользователь решает перейти в другой раздел приложения.

Когда пользователь возвращается к основному контенту, я хочу, чтобы приложение не инициализировало его каждый раз, а каким-то образом сохраняло его в памяти и восстанавливало, когда пользователь нажимает кнопку "Домой".

В своем текущем состоянии домашний вид снова и снова инициализируется при возврате к разделу "Домашний", что приводит к замедлению работы приложения. У меня такой вопрос: есть ли способ как-то сохранить этот пользовательский элемент управления в памяти, чтобы я мог быстро его восстановить?

Спасибо!

2 ответа

Решение

В конце концов я решил переместить 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 если это.

Спасибо всем помощникам!

Скрытие - вариант выбора, как предложено @Matt. Другой способ - исследовать удивительный мир фреймворков (Prism, Caliburn, Caliburn.Micro, ...)

Они предоставляют большую помощь в управлении приложениями WPF.

По сути, вам нужно сохранить ссылку на ViewModel, коллекцию в mainviewmodel или mainview, которая отслеживает загруженные viewmodels.

Другие вопросы по тегам