Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将视图预加载到WPF应用程序';用户界面。怎么可能呢?_Wpf_Optimization_Rendering - Fatal编程技术网

将视图预加载到WPF应用程序';用户界面。怎么可能呢?

将视图预加载到WPF应用程序';用户界面。怎么可能呢?,wpf,optimization,rendering,Wpf,Optimization,Rendering,在WPF应用程序中,主窗口有一个内容控件,可以向其中加载一个用户控件。每个用户控件都有大约一千个小的、简单的自定义控件。这就是为什么切换到另一个用户控件的渲染时间不舒服的原因 我的问题是,以某种方式将视图预加载到UI中以便快速切换到另一个视图的正确方法是什么?它能以用户看不见的方式完成吗?或者渲染XAML应该始终在窗口的可见、聚焦部分进行,这样就不可能预加载将来可能需要的内容了 请注意,我不是指从数据库预加载数据 到目前为止,我还没有必要这样做,但是: 您可以尝试将所需内容加载到由于布局决定而无

在WPF应用程序中,主窗口有一个内容控件,可以向其中加载一个用户控件。每个用户控件都有大约一千个小的、简单的自定义控件。这就是为什么切换到另一个用户控件的渲染时间不舒服的原因

我的问题是,以某种方式将视图预加载到UI中以便快速切换到另一个视图的正确方法是什么?它能以用户看不见的方式完成吗?或者渲染XAML应该始终在窗口的可见、聚焦部分进行,这样就不可能预加载将来可能需要的内容了


请注意,我不是指从数据库预加载数据

到目前为止,我还没有必要这样做,但是:

您可以尝试将所需内容加载到由于布局决定而无法显示的控件中。这将强制创建内容,即使它不会立即显示


当您想“引入内容”时,请将其从视觉树的当前位置移除(确切的方法可能取决于其父控件的确切位置),然后将其作为另一个可见控件的子控件重新插入。

考虑实现一个简单的翻转内容控件。 它应该只提供两个包含两个内容模板的依赖属性和一个在提供的模板之间切换的依赖属性(
SwitchTemplate
)。 因此,默认情况下,它将显示默认的
ContentTemplate
,并通过触发
SwitchTemplate
属性,将second
ContentTempale
设置为翻转控件的主控件