Поделиться через


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.

Применяется к

См. также раздел