I ont une fenêtre qui possède plusieurs DataTemplate
qui sont charge à un ContentControl
basé sur un RadioButton
(Le RadioButton
envoie une commande au modelview qui définit la propriété Content
du ContentControl
WPF - MVVM DataTemplate charge en mémoire pour une réutilisation
Il fonctionne bien, mais maintenant plusieurs vues contiennent un objet « lourd » (Eyeshot CAD viewer).
le passage à l'une de ces vue provoque un retard (en ce moment il n'y a absolument aucune logique dans tout le logiciel autre que la vue/voir le modèle)
Existe-t-il un moyen de charger une fois la vue et le contrôle lourd dans la mémoire, puis de le réutiliser lors du passage à sa vue? (Le ViewModel
de ce point de vue est actuellement un singleton, mais cela ne suffit pas)
<DockPanel>
<StackPanel Orientation="Horizontal" DockPanel.Dock="Top" Height="160" Margin="0,0,0,12">
... Removed for clarity
</StackPanel>
<ContentControl x:Name="Tabs" Content="{Binding SelectedTabViewModel}" Margin="0,12,0,12"/>
</DockPanel>
Je voterais comme doublon de [cette question] (http://stackoverflow.com/q/30033162/1997232), mais je n'ai pas de réponse moi-même. Ce que je fais actuellement attend le premier rendu (qui se produit dans un autre 'ContentControl') avant de changer de vue (pendant l'attente vous pouvez montrer une animation pour amuser l'utilisateur):' Dispatcher.InvokeAsync (() => ..., DispatcherPriority .Render); '(où' ... 'est une partie qui fait que le second' ContentControl' remplace le premier ..). – Sinatr