次の方法で共有


ColorToColorForTextConverter

ColorToColorForTextConverter は、ユーザーが受信 Color を、これが人間の目で暗いと判断されるかどうかに基づいて、Colors.Black または Colors.White のモノクロ値に変換できるように一方向コンバーターです。

Convert メソッドを使用すると、指定された value が人間の目で見て暗いと判断されるかかどうかに基づいて、指定された valueColors.Black または Colors.White に変換されて返されます。

ConvertBack メソッドはサポートされていません。

BaseConverter プロパティ

基底クラス public abstract class BaseConverter には、次のプロパティが実装されています。

プロパティ 説明
DefaultConvertReturnValue IValueConverter.Convert(object?, Type, object?, CultureInfo?)Exception をスローしたときに返される既定値です。 この値は、CommunityToolkit.Maui.Options.ShouldSuppressExceptionsInConverterstrue に設定されている場合に使用されます。
DefaultConvertBackReturnValue IValueConverter.ConvertBack(object?, Type, object?, CultureInfo?)Exception をスローしたときに返される既定値です。 この値は、CommunityToolkit.Maui.Options.ShouldSuppressExceptionsInConverterstrue に設定されている場合に使用されます。

ICommunityToolkitValueConverter プロパティ

public interface ICommunityToolkitValueConverter には次のプロパティが実装されています。

プロパティ タイプ 説明
DefaultConvertReturnValue object? IValueConverter.Convert(object?, Type, object?, CultureInfo?)Exception をスローしたときに返される既定値です。 この値は、CommunityToolkit.Maui.Options.ShouldSuppressExceptionsInConverterstrue に設定されている場合に使用されます。
DefaultConvertBackReturnValue object? IValueConverter.ConvertBack(object?, Type, object?, CultureInfo?)Exception をスローしたときに返される既定値です。 この値は、CommunityToolkit.Maui.Options.ShouldSuppressExceptionsInConverterstrue に設定されている場合に使用されます。

構文

XAML

XAML 名前空間を含める

XAML でこのツールキットを使用するには、次の xmlns をページまたはビューに追加する必要があります。

xmlns:toolkit="http://schemas.microsoft.com/dotnet/2022/maui/toolkit"

したがって、以下のコードは、

<ContentPage
    x:Class="CommunityToolkit.Maui.Sample.Pages.MyPage"
    xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
    xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml">

</ContentPage>

次のように、xmlns を含むように変更されます。

<ContentPage
    x:Class="CommunityToolkit.Maui.Sample.Pages.MyPage"
    xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
    xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
    xmlns:toolkit="http://schemas.microsoft.com/dotnet/2022/maui/toolkit">

</ContentPage>

ColorToColorForTextConverter を使用する

ColorToColorForTextConverter は、XAML では次のように使用できます。

<ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             xmlns:toolkit="http://schemas.microsoft.com/dotnet/2022/maui/toolkit"
             x:Class="CommunityToolkit.Maui.Sample.Pages.Converters.ColorToColorForTextConverterPage">

    <ContentPage.Resources>
        <ResourceDictionary>
            <toolkit:ColorToColorForTextConverter x:Key="ColorToColorForTextConverter" />
        </ResourceDictionary>
    </ContentPage.Resources>

    <Label Text="The Text is showing in an optimum color against the background"
           TextColor="{Binding Source={RelativeSource AncestorType={x:Type ContentPage}}, Path=BackgroundColor, Converter={StaticResource ColorToColorForTextConverter}}" />

</ContentPage>

C#

ColorToColorForTextConverter は、C# では次のように使用できます。

class ColorToColorForTextConverterPage : ContentPage
{
    public ColorToColorForTextConverterPage()
    {
        var label = new Label { Text = "The Text is showing in an optimum color against the background" };

        label.SetBinding(
            Label.TextColorProperty,
            new Binding(
                static (ContentPage page) => page.BackgroundColor,
                converter: new ColorToColorForTextConverter(),
                source: this));

        Content = label;
    }
}

C# Markup

この CommunityToolkit.Maui.Markup パッケージは、C# でこのコンバーターを使用するためのより簡潔な方法を提供します。

using CommunityToolkit.Maui.Markup;

class ColorToColorForTextConverterPage : ContentPage
{
    public ColorToColorForTextConverterPage()
    {
        Content = new Label { Text = "The Text is showing in an optimum color against the background" }
            .Bind(
                Label.TextColorProperty,
                static (ContentPage page) => page.BackgroundColor,
                converter: new ColorToColorForTextConverter(),
                source: this);
    }
}

このコンバーターの動作の例は .NET MAUI Community Toolkit サンプル アプリケーションで確認できます。

API

ColorToColorForTextConverter のソース コードは、.NET MAUI Community Toolkit の GitHub リポジトリにあります。