UIElement.CacheMode Свойство
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Возвращает или задает значение, указывающее, что отображаемое содержимое должно кэшироваться как составное растровое изображение, когда это возможно.
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 в качестве атрибута.
Note
BitmapCache — это единственный существующий практический производный класс в API среда выполнения Windows, который обеспечивает это поведение (тип 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{});
Обычно не применяйте CacheMode значения к элементам без тестирования и профилирования. Кэширование в единицу обработки графики (GPU) предназначено только для меньшинства возможных ситуаций отрисовки для приложения, и ожидается, что вы профилируете различные сочетания того, когда и где в пользовательском интерфейсе применяется CacheMode параметр. Чрезмерное использование CacheMode может повредить производительность, а не помочь ей. Лучше всего профилировать область поверхности приложения, чтобы определить, какие целевые области наиболее дороги для отрисовки, а также экспериментировать с кэшированием только определенных элементов на основе этих результатов. Дополнительные сведения о том, как профилировать для отрисовки, см. в разделе "Кэширование статического содержимого" раздела " Оптимизация разметки XAML ".
Избегайте совместного использования кэширования и раскадровки анимаций. Кэширование содержимого, в котором Opacity или RenderTransform анимированы, приводит к тому, что анимация становится зависимыми анимациями, даже если анимация равна нулевой длительности. Чтобы даже увидеть, что эти анимации выполняются, вам придется задать значение EnableDependentAnimationtrue, а зависимые анимации обычно делают недействительными все преимущества производительности, которые можно получить от кэширования композиции.
Непрозрачность часто анимируется визуальными состояниями в шаблонах элементов управления, поэтому это соображение, даже если вы не объявляете какие-либо собственные раскадровки анимации на страницах XAML.