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


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)

Параметры

target
ICompositionSupportsSystemBackdrop

Целевой объект фона.

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.

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