Sólo para añadir a esto, tuve un problema similar y lograron resolverlo mediante el almacenamiento de un control de usuario que representa el contenido de un elemento de ficha en el código subyacente.
En mi proyecto tengo un control de pestañas vinculado a una colección (MVVM). Sin embargo, la primera pestaña es una vista general que muestra un resumen de todas las otras pestañas en una vista de lista. El problema que tenía era que cada vez que un usuario mueve su selección de una pestaña de elemento a la pestaña de vista general, la descripción general se vuelve a dibujar con todos los datos de resumen, que pueden tomar de 10 a 15 segundos dependiendo de la cantidad de elementos en la colección. (tenga en cuenta que no se trata de volver a cargar los datos reales de una base de datos ni nada por el estilo, es simplemente el dibujo de la vista de resumen lo que estaba demorando).
Lo que quería era que esta carga de la vista de resumen solo se produjera una vez cuando el contexto de datos se carga por primera vez y cualquier conmutación posterior entre pestañas sea instantánea.
Solución:
clases involucradas: MainWindow.xaml - la página principal que contiene la tarjeta de registro. MainWindow.xaml.cs - Código detrás para arriba. MainWindowViewModel.cs - Ver modelo para la vista anterior, contiene la colección. Overview.xaml: control del usuario que dibuja el contenido del elemento de la pestaña de descripción general. Visión generalViewModel.cs - Ver modelo para la vista de arriba.
Pasos:
reemplazar el DataTemplate en 'MainWindow.xaml' que dibuja el elemento de ficha visión general con un control de usuario en blanco denominado 'OverviewPlaceholder'
la referencia a la 'OverviewViewModel' público dentro de '' MainWindowViewModel.cs
Añadir una referencia estática a 'Visión general' en 'MainWindow.xaml.cs'
Agregue un controlador de eventos al evento cargado del control de usuario 'OverviewPlaceholder', con este método instancia la referencia estática a 'Descripción general' solo si es nulo, configure el contexto de datos de esta referencia a la referencia 'OverviewViewModel' dentro del contexto de datos actual (que es 'MainWindowViewModel') y establecer el contenido del marcador de posición ser la referencia estática a 'Descripción general'.
Ahora la página de información general solamente se extrae una vez porque cada vez que se carga (es decir, el usuario hace clic en la pestaña visión general), que pone el control de usuario estática ya rendido de nuevo en la página.
No creo TabItems se descargan/vuelve a cargar cada vez que el seleccionado elemento en el control de pestañas ch anges. No estoy seguro, pero tal vez la lógica SelectionChanged de su TabControl necesita ser modificada para que no vuelva a consultar la base de datos todo el tiempo. – ASanch
Los eventos cargados/descargados de DataTemplates se ejecutan cada vez que cambio las pestañas (estoy usando el patrón de diseño de MVVM) – Rachel
Por lo tanto, en su aplicación, cada vez que la pestaña seleccionada cambia, desencadena una conexión a la base de datos para recuperar el objeto ¿datos? – ASanch