次の方法で共有


Windows の VisualElement レガシ カラー モード

一部の Xamarin.Forms ビューには、レガシ カラー モードが備わっています。 このモードでは、ビューの IsEnabled プロパティが false に設定されている場合、ビューでは、ユーザーが設定した色が、無効な状態の既定のネイティブ色でオーバーライドされます。 下位互換性のため、このレガシ カラー モードでは、サポートされているビューの既定の動作が維持されます。

このユニバーサル Windows プラットフォームのプラットフォーム固有設定では、このレガシ カラー モードが無効になり、ビューが無効になっても、ユーザーがビューに設定した色が維持されます。 VisualElement.IsLegacyColorModeEnabled 添付プロパティを false に設定することで、XAML で使用されます。

<ContentPage ...
             xmlns:windows="clr-namespace:Xamarin.Forms.PlatformConfiguration.WindowsSpecific;assembly=Xamarin.Forms.Core">
    <StackLayout>
        ...
        <Editor Text="Enter text here"
                TextColor="Blue"
                BackgroundColor="Bisque"
                windows:VisualElement.IsLegacyColorModeEnabled="False" />
        ...
    </StackLayout>
</ContentPage>

または、Fluent API を使用して C# から使用することもできます。

using Xamarin.Forms.PlatformConfiguration;
using Xamarin.Forms.PlatformConfiguration.WindowsSpecific;
...

_legacyColorModeDisabledEditor.On<Windows>().SetIsLegacyColorModeEnabled(false);

VisualElement.On<Windows> メソッドは、このプラットフォーム固有設定が Windows でのみ実行されるように指定します。 Xamarin.Forms.PlatformConfiguration.WindowsSpecific 名前空間の VisualElement.SetIsLegacyColorModeEnabled メソッドは、レガシ カラー モードを無効にするかどうかを制御するために使われます。 さらに、VisualElement.GetIsLegacyColorModeEnabled メソッドを使って、レガシ カラー モードが無効になっているかどうかを返すことができます。

その結果、レガシ カラー モードを無効にできるため、ビューが無効になっている場合でも、ユーザーがビューに設定した色が維持されます。

レガシ カラー モードが無効

Note

ビューに VisualStateGroup を設定すると、レガシ カラー モードは完全に無視されます。 ビジュアルの状態の詳細については、「Xamarin.Forms Visual State Manager」を参照してください。