假设我有一个很大的 XAML 页面。此页面上有数十个文本框、按钮等,这些控件需要根据各种条件(权限、视图模型状态等)显示/隐藏/修改。设置视觉转换的两种可能方法是:
- 使用视觉状态管理器;将状态转换绑定到视图模型中的属性
- 将控件属性绑定到它们各自的视图模型属性,在适用的情况下使用转换器(布尔到可见性、字符串到颜色等)
我的问题:纯粹从性能(速度和内存占用)的角度来看,一种或另一种方法明显更好吗?第二种方法,用绑定加载页面,是否容易压低它?或者差异可能可以忽略不计?
假设我有一个很大的 XAML 页面。此页面上有数十个文本框、按钮等,这些控件需要根据各种条件(权限、视图模型状态等)显示/隐藏/修改。设置视觉转换的两种可能方法是:
我的问题:纯粹从性能(速度和内存占用)的角度来看,一种或另一种方法明显更好吗?第二种方法,用绑定加载页面,是否容易压低它?或者差异可能可以忽略不计?
我没有测试或基准来证明这一点,但如下推理表明视觉状态方法应该更快。
对于绑定场景:
PropertyChanged
都会引发。视觉状态场景没有这些处理程序需要处理:
使用 Visual State Manager 显然比设置过多的视图到视图模型绑定更能提高性能。
编辑John Gossman 还指出(很久以前)绑定可能很重,并且可能开始在大型应用程序中消耗过多的内存。在链接的文章中,他声称通过用单个静态回调替换所有绑定节省了 100MB。