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