次の方法で共有


IsInRangeConverter

IsInRangeConverter は、IComparable を実装する受信値を受け取り、最小値と最大値の間にある値の結果を返す一方向のコンバーターです。 TrueObject および FalseObject、またはこのいずれかのプロパティでオブジェクトが指定されていない場合、結果は既定で bool になります。 TrueObject および FalseObject プロパティに値が割り当てられている場合、IsInRangeConverter では割り当てられたそれぞれのオブジェクトを返します。

Note

TrueObjectFalseObject両方に値を定義するか、どちらも定義しない必要があることに注意してください。

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>

IsInRangeConverter を使用する

IsInRangeConverter は、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.IsInRangeConverterPage">
        <ResourceDictionary>
            <x:String x:Key="MinValue">Hello</x:String>
            <x:String x:Key="MaxValue">World</x:String>
            <Color x:Key="TrueColor">Green</Color>
            <Color x:Key="FalseColor">Red</Color>
        </ResourceDictionary>

    <Label BackgroundColor="{Binding MyValue, Converter={toolkit:IsInRangeConverter TrueObject={StaticResource TrueColor}, FalseObject={StaticResource FalseColor}, MinValue={StaticResource MinValue}, MaxValue={StaticResource MaxValue}}}" Text="The background of this label will be green if MyValue is between 'Hello' and 'World', otherwise red." />

</ContentPage>

C#

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


class IsInRangeConverterPage : ContentPage
{
    public IsInRangeConverterPage()
    {
        Content = new Label()
            .Text("The background of this label will be green if MyValue is between 'Hello' and 'World', otherwise red.")
            .Bind(
                Label.BackgroundColorProperty,
                static (ViewModel vm) => vm.MyValue,
                converter: new IsInRangeConverter
                {
                        TrueObject = Colors.Green,
                        FalseObject = Colors.Red,
                        MinValue = "Hello",
                        MaxValue = "World"
                });
    }
}

Properties

プロパティ タイプ 説明
MinValue IComparable 比較範囲の最小値。
MaxValue IComparable 比較範囲の最大値。
FalseObject object 比較結果が false 比較の場合に返される結果。
TrueObject object 比較結果が true 比較の場合に返される結果。

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

API

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