SilverLight 的每个UIElement 元素都有一个 “CacheMode” 设置该属性可大幅度提高数据计算和页面元素的处理性能。
如果一个Canvas 有 上千个UIElement 元素 并需要通过鼠标控制器中一个移动,或大小变化, 该属性将非常的重要。
其实这只是通过缓存的方式优化了处理上的性能, 其实优化性能的关键主要在于布局
布局系统对集合中的每个子成员都完成两个处理过程:测量处理过程和排列处理过程。每个子对象都针对 Measure 和 Arrange 方法提供它自己的重写实现,以提供其特定的布局行为。简单地说,布局是一个递归系统,实现在屏幕上对元素进行大小调整、定位和绘制。
-
子 UIElement 对象通过首先测量它的核心属性来开始布局过程。
-
计算与大小相关的、对象的 FrameworkElement 属性,如 Width、Height 和 Margin。
-
应用特定于 Panel 的逻辑,如 DockPanel 的 Dock 属性,或者 StackPanel 的 Orientation 属性。
-
在测量所有子对象后,将排列或定位内容。
-
将子对象集合绘制到屏幕上。
如果发生下列任意操作,将再次调用布局处理过程:
-
向集合中添加了一个子对象。
-
向子对象应用了 LayoutTransform。
-
为子对象调用了 UpdateLayout 方法。
-
用影响测量或排列过程的元数据进行了标记的依赖项属性的值发生更改。