次の方法で共有


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は常に軽く設定されます。

たとえば、アプリの実行中にシステム テーマが Light から Dark に変更された場合、このメソッドが呼び出され、背景テーマはシステム テーマで [濃色] に変更されるのではなく、Light に戻されます。

<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。 既定のポリシーに変更がある場合 (ユーザーがシステム テーマを Light から Dark に変更した場合など)、このメソッドが呼び出されます。 このメソッドでは、新しい SystemBackdropConfiguration オブジェクトを作成し、必要に応じてプロパティを設定します。 次に、変更した SystemBackdropConfigurationSetSystemBackdropConfiguration に渡します。

適用対象