我一直在编写Windows 8商店XAML / C#应用程序,在Windows Surface设备上进行测试时发现应用程序在页面之间导航非常慢。
该应用程序遵循MVVM模式并使用SQLite。我的第一个想法是,SQLite的数据访问会减慢速度。
我已经删除了所有的c#代码和数据访问代码,所以我只剩下一个XAML shell。
执行此操作后,我仍然发现在它们之间导航时加载速度很慢的页面。
我在一个页面上有大约60个控件(TextBoxes,Combos和CheckBox)所以我不会说这是什么重要的,加载需要1-2秒。这可能听起来不多,但这是一个值得注意的暂停,没有任何数据访问代码。
是否有人提示让XAML页面更快地绘制/加载?
提前致谢。
答案 0 :(得分:0)
问题是,如果你让Grid + ScrollViewer作为页面的根容器,你将无法虚拟化任何东西。
但是,您可以通过GridView(默认情况下支持滚动)替换此Grid + ScrollViewer,并将GridView.ItemsPanel设置为VirtualizingStackPanel。
这需要对您的代码进行一些重构。
一种解决方案是将表单拆分为控件的“组”。例如,如果表单的目标是编辑用户配置文件,则可以使用“个人信息”组和“专业人员信息”组。 为表单创建一个Group-hierarchy之后,只需将GridView绑定到这些组,virtualizingStackPanel将只显示/实现要显示的控件。