WPF - MVVM数据模板加载到内存以便重用

3
我有一个窗口,其中包含几个不同的DataTemplate,这些模板基于RadioButton加载到ContentControl中(RadioButton发送命令到ModelView,设置ContentControlContent属性)。
它运行良好,但现在有几个视图包含一个“沉重”的对象(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
1个回答

0
在您的DataTemplate上,您可以设置属性x:Shared="True",这将允许框架重用数据模板中的可视控件(内部的ContentPresenter)。
这不会在启动时加载组件,但是一旦实例化,它将被重用。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接