我有一个窗口,其中包含几个不同的
它运行良好,但现在有几个视图包含一个“沉重”的对象(Eyeshot CAD viewer)。
切换到任何这些视图都会导致延迟(此时整个软件中除了视图/视图模型之外绝对没有逻辑)。
是否有一种方法可以将视图和重量级控件一次性加载到内存中,然后在切换到其视图时重用它?(该视图的
DataTemplate
,这些模板基于RadioButton
加载到ContentControl
中(RadioButton
发送命令到ModelView,设置ContentControl
的Content
属性)。它运行良好,但现在有几个视图包含一个“沉重”的对象(Eyeshot CAD viewer)。
切换到任何这些视图都会导致延迟(此时整个软件中除了视图/视图模型之外绝对没有逻辑)。
是否有一种方法可以将视图和重量级控件一次性加载到内存中,然后在切换到其视图时重用它?(该视图的
ViewModel
当前是单例,但这并没有帮助)<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>
ContentControl
中)之后再切换视图(在等待期间,您可以显示一些动画来娱乐用户):Dispatcher.InvokeAsync(() => ... , DispatcherPriority.Render);
(其中...
是使第二个ContentControl
替换第一个的部分)。 - Sinatr