SystemBackdrop.OnDefaultSystemBackdropConfigurationChanged Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Переопределите этот метод для вызова при изменении объекта, возвращаемого методом GetDefaultSystemBackdropConfiguration
. Это полезно, если вы используете пользовательский SystemBackdropConfiguration
.
protected:
virtual void OnDefaultSystemBackdropConfigurationChanged(ICompositionSupportsSystemBackdrop ^ target, XamlRoot ^ xamlRoot) = OnDefaultSystemBackdropConfigurationChanged;
void OnDefaultSystemBackdropConfigurationChanged(ICompositionSupportsSystemBackdrop const& target, XamlRoot const& xamlRoot);
protected virtual void OnDefaultSystemBackdropConfigurationChanged(ICompositionSupportsSystemBackdrop target, XamlRoot xamlRoot);
function onDefaultSystemBackdropConfigurationChanged(target, xamlRoot)
Protected Overridable Sub OnDefaultSystemBackdropConfigurationChanged (target As ICompositionSupportsSystemBackdrop, xamlRoot As XamlRoot)
Параметры
Целевой объект фона.
- xamlRoot
- XamlRoot
Корень XAML целевого объекта фона.
Примеры
В этом примере показан пользовательский класс фона системы, реализованный с помощью MicaController. Метод OnDefaultSystemBackdropConfigurationChanged
переопределен, и в нем задана конфигурация Theme
всегда светлая.
Например, если системная тема изменяется с светлой на темную во время работы приложения, вызывается этот метод, и фоновая тема возвращается на Светлая, а не меняется на Темная с системной темой.
<Window
... >
<Window.SystemBackdrop>
<local:MicaLightSystemBackdrop/>
</Window.SystemBackdrop>
<!-- XAML content -->
</Window>
public class MicaLightSystemBackdrop : SystemBackdrop
{
MicaController micaController;
protected override void OnTargetConnected(ICompositionSupportsSystemBackdrop connectedTarget, XamlRoot xamlRoot)
{
base.OnTargetConnected(connectedTarget, xamlRoot);
if (micaController is not null)
{
throw new Exception("This controller cannot be shared");
}
micaController = new MicaController();
//_ = GetDefaultSystemBackdropConfiguration(connectedTarget, xamlRoot);
micaController.AddSystemBackdropTarget(connectedTarget);
}
protected override void OnTargetDisconnected(ICompositionSupportsSystemBackdrop disconnectedTarget)
{
base.OnTargetDisconnected(disconnectedTarget);
micaController.RemoveSystemBackdropTarget(disconnectedTarget);
micaController = null;
}
protected override void OnDefaultSystemBackdropConfigurationChanged(ICompositionSupportsSystemBackdrop target, XamlRoot xamlRoot)
{
SystemBackdropConfiguration config = new SystemBackdropConfiguration();
config.Theme = SystemBackdropTheme.Light;
micaController.SetSystemBackdropConfiguration(config);
}
}
Комментарии
Этот метод полезен при реализации настраиваемой конфигурации SystemBackdropConfiguration , которая включает некоторые отслеживаемые состояния свойств, но в некотором смысле отличается от политики по умолчанию.
Вместо применения конфигурации фона по умолчанию, полученной из GetDefaultSystemBackdropConfiguration (путем передачи в SetSystemBackdropConfiguration), переопределите OnDefaultSystemBackdropConfigurationChanged
. При изменении политики по умолчанию (например, при изменении пользователем темы системы с светлой на темную) вызывается этот метод. В этом методе создайте новый объект SystemBackdropConfiguration и задайте его свойства по мере необходимости. Затем передайте измененный SystemBackdropConfiguration
объект в SetSystemBackdropConfiguration.