UIElement.CacheMode 属性
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
获取或设置一个值,该值指示呈现的内容应尽可能缓存为复合位图。
public:
property CacheMode ^ CacheMode { CacheMode ^ get(); void set(CacheMode ^ value); };
CacheMode CacheMode();
void CacheMode(CacheMode value);
public CacheMode CacheMode { get; set; }
var cacheMode = uIElement.cacheMode;
uIElement.cacheMode = cacheMode;
Public Property CacheMode As CacheMode
<uiElement CacheMode="BitmapCache" />
属性值
一个 值,该值指示应尽可能将呈现的内容缓存为复合位图。 如果指定 CacheMode 的值,则 RenderTransform 和 Opacity 中的呈现操作将在图形处理单元上执行, (GPU) (如果可用)。 默认值为 null,它不启用缓存组合模式。
注解
设置此值以启用将 RenderTransform 和 Opacity 位图卸载到图形处理单元 (GPU) 的缓存行为。 否则,请将其保留为 null。
对于 XAML,字符串文本“BitmapCache”是唯一可用于将 CacheMode 设置为属性的已启用值。
注意
BitmapCache 是 Windows 运行时 API 中现有的唯一实际派生类,它支持此行为 (CacheMode 类型是一种中间类型,仅出于基础结构和) 的旧原因而存在。
如果在代码中设置 CacheMode,请将其设置为 BitmapCache 的新值,如下所示:
<Canvas x:Name="canvas1"/>
canvas1.CacheMode = new BitmapCache();
#include <winrt/Windows.UI.Xaml.Media.h>
...
canvas1().CacheMode(Windows::UI::Xaml::Media::BitmapCache{});
canvas1->CacheMode = ref new BitmapCache();
如果不先进行测试和分析,通常不要将 CacheMode 值应用于元素。 缓存到图形处理单元 (GPU) 仅适用于应用的少数可能的呈现情况,并且预期你将分析 UI 中应用 CacheMode 设置的时间和位置的各种组合。 过度使用 CacheMode 可能会损害性能,而不是帮助性能。 最好是分析应用外围应用,以确定渲染成本最高的目标区域,并基于这些结果尝试仅缓存某些元素。 有关如何分析呈现的详细信息,请参阅优化 XAML 标记主题的 IsOverdrawHeatMapEnabled 和“缓存静态内容”部分。
避免同时使用 CacheMode 和情节提要动画。 缓存 不透明度 或 RenderTransform 动画的内容会导致动画成为依赖动画,即使动画的持续时间为零。 若要查看这些动画的运行,则必须将 EnableDependentAnimation 设置为 true,并且依赖动画通常会使缓存合成获得的所有性能提升失效。 不透明度 通常由控件模板中的视觉状态进行动画处理,因此即使你未在 XAML 页面中声明任何自己的情节提要动画,这也是一个考虑因素。