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 в качестве атрибута.
Примечание
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{});
canvas1->CacheMode = ref new BitmapCache();
Обычно не следует применять значения CacheMode к элементам без предварительного тестирования и профилирования. Кэширование в графическом процессоре (GPU) предназначено только для небольшой части возможных ситуаций отрисовки для приложения. Ожидается, что вы профилируете различные сочетания времени и места в пользовательском интерфейсе для применения параметра CacheMode. Чрезмерное использование CacheMode может повредить производительность, а не помочь ей. Лучше всего профилировать контактную область приложения, чтобы определить, какие целевые области являются наиболее дорогостоящими для отрисовки, и поэкспериментировать с кэшированием только определенных элементов на основе этих результатов. Дополнительные сведения о профилирование для отрисовки см. в разделах IsOverdrawHeatMapEnabled и "Кэширование статического содержимого" статьи Оптимизация разметки XAML .
Избегайте совместного использования CacheMode и раскадровки анимаций. Кэширование содержимого с анимацией Opacity или RenderTransform приводит к тому, что анимации становятся зависимыми, даже если анимация имеет нулевую длительность. Чтобы даже увидеть выполнение этих анимаций, необходимо задать для EnableDependentAnimationзначение true, а зависимая анимация обычно делает недействительными все повышения производительности, которые вы можете получить от кэширования композиции. Непрозрачность часто анимируется визуальными состояниями в шаблонах элементов управления, поэтому это следует учитывать, даже если вы не объявляете какие-либо собственные раскадровки анимации на страницах XAML.