Просто чтобы добавить к этому, у меня была похожая проблема, и мне удалось ее решить путем кэширования пользовательского элемента управления, который представлял содержимое элемента вкладки в коде позади.
В моем проекте у меня есть вкладкаэлемент управления, связанный с коллекцией (MVVM).Однако первая вкладка представляет собой обзор, который показывает сводку всех других вкладок в виде списка.Проблема, с которой я столкнулся, заключалась в том, что всякий раз, когда пользователь перемещает свой выбор со вкладки элемента на вкладку обзора, обзор перерисовывается со всеми сводными данными, что может занять 10-15 секунд в зависимости от количества элементов в коллекции.(обратите внимание, что это не перезагрузка фактических данных из БД или чего-либо еще, это просто рисунок сводного представления, который занимал время).
То, что я хотел, было для этой загрузки сводного представления толькопроисходят один раз, когда контекст данных загружается впервые, и любое последующее переключение между вкладками должно быть мгновенным.
Решение:
Используемые классы: MainWindow.xaml - главная страница, содержащая элемент управления вкладкой.MainWindow.xaml.cs - код для выше.MainWindowViewModel.cs - представление модели для представленного выше представления, содержит коллекцию.Overview.xaml - пользовательский элемент управления, который отображает содержимое элемента вкладки обзора.OverviewViewModel.cs - просмотр модели для представленного выше представления.
Шаги:
Замените табличку данных в «MainWindow.xaml», которая рисует элемент вкладки обзора, с пустым пользовательским элементом управления с именем «OverviewPlaceholder»
Сделать ссылку на «OverviewViewModel» общедоступной в «MainWindowViewModel.cs»
Добавить статическую ссылку на «Overview» в «MainWindow.xaml.cs»
Добавить обработчик события к загруженному событию пользовательского элемента управления «OverviewPlaceholder», в этом методе создавать статическую ссылку на «Overview» только в том случае, если она пуста, установить текст данных этой ссылки наСсылка «OverviewViewModel» в текущем текстовом тексте данных (то есть «MainWindowViewModel») и установка содержимого заполнителя в качестве статической ссылки на «Overview».
Теперь страница обзора отображается толькоодин раз, потому что каждый раз, когда он загружается (т. е. пользователь нажимает на вкладку обзора), он возвращает уже визуализированный статический пользовательский элемент управления обратно на страницу.