В моем проекте у меня есть две страницы, page1 и page2. Навигация между страницами управляется фреймом.
У меня есть заметки, что когда я перехожу со страницы 1 на страницу 2, а затем возвращаюсь на страницу 1 мой конструктор вызова программы page1 () каждый раз, и это проблема, потому что страница 1 у меня есть модель представления с несколькими привязками, и на странице 1 также отображается TreeView с большим количеством элементов, и это вызывает медленное переключение между страницами.
Я пробовал с KeepAlive = "True", но в моем случае проблема это то же самое, и конструктор page1 () вызывается каждый раз.
private void Navigate(ViewerMode viewerMode)
{
if (_lastViewerMode == viewerMode) return;
var window = (Application.Current.MainWindow);
var frame = ((MainWindow)window).Frame;
var rawPageUri = _uriPath[viewerMode];
var pageUri = new Uri(rawPageUri, UriKind.Relative);
frame.Navigate(pageUri);
_lastViewerMode = viewerMode;
}
private readonly IReadOnlyDictionary<ViewerMode, string> _uriPath = new Dictionary<ViewerMode, string>
{
{ViewerMode.OnlinePage, "Views/Activities.xaml"},
{ViewerMode.OfflinePage, "Views/OfflineActivities.xaml"}
};
это мой метод навигации, с помощью которого я перемещаюсь от Activity.xaml к страницам OffliceActivities.xaml на основе параметра ViewerMode. В этом случае я использовал URI, а не объекты.
Может быть лучше в моем случае использовать объекты, а не URI? Моя идея состоит в том, чтобы хранить содержимое TreeView в памяти и не перезагружать его каждый раз, перезагрузить это проблема .
Спасибо.