iOS の VisualElement レガシ カラー モード
一部の Xamarin.Forms ビューには、レガシ カラー モードが備わっています。 このモードでは、ビューの IsEnabled
プロパティが false
に設定されている場合、ビューでは、ユーザーが設定した色が、無効な状態の既定のネイティブ色でオーバーライドされます。 旧バージョンとの互換性のために、このレガシ カラー モードでは、サポートされているビューの既定の動作が維持されます。
この iOS プラットフォーム固有設定では、VisualElement
でこのレガシ カラー モードが無効になるため、ユーザーがビューに設定した色は、ビューが無効になっている場合でも維持されます。 VisualElement.IsLegacyColorModeEnabled
添付プロパティを false
に設定することで、XAML で使用されます。
<ContentPage ...
xmlns:ios="clr-namespace:Xamarin.Forms.PlatformConfiguration.iOSSpecific;assembly=Xamarin.Forms.Core">
<StackLayout>
...
<Button Text="Button"
TextColor="Blue"
BackgroundColor="Bisque"
ios:VisualElement.IsLegacyColorModeEnabled="False" />
...
</StackLayout>
</ContentPage>
または、Fluent API を使用して C# から使用することもできます。
using Xamarin.Forms.PlatformConfiguration;
using Xamarin.Forms.PlatformConfiguration.iOSSpecific;
...
_legacyColorModeDisabledButton.On<iOS>().SetIsLegacyColorModeEnabled(false);
VisualElement.On<iOS>
メソッドは、このプラットフォーム固有が iOS でのみ実行されるように指定します。 Xamarin.Forms.PlatformConfiguration.iOSSpecific
名前空間の VisualElement.SetIsLegacyColorModeEnabled
メソッドは、レガシ カラー モードを無効にするかどうかを制御するために使用されます。 さらに、VisualElement.GetIsLegacyColorModeEnabled
メソッドを使って、レガシ カラー モードが無効になっているかどうかを返すことができます。
その結果、レガシ カラー モードを無効にできるため、ビューが無効になっている場合でも、ユーザーがビューに設定した色が維持されます。
Note
ビューに VisualStateGroup
を設定すると、レガシ カラー モードは完全に無視されます。 ビジュアルの状態の詳細については、「Xamarin.Forms Visual State Manager」を参照してください。