次の方法で共有


FuncMultiConverter

FuncMultiConverter は、UI の構築時に IMultiValueConverter 実装をインラインで定義する機能を提供します。 FuncMultiConverter 実装を使用するもう 1 つの利点は、これは変換を実行するためのタイプ セーフな方法を提供するということです。 C# マークアップ パッケージは、Bind 拡張メソッドの複数のバインディング オプションを提供するために内部的に FuncMultiConverter を使用します。

Note

FuncMultiConverter がサポートするのは MultiBinding だけです。Binding のサポートが必要な場合は MultiConverter を参照してください。

このコンバーターには、必要な情報量に基づいて変換を定義するさまざまな方法が用意されています。

FuncMultiConverter<TSource1, TSource2, TDest>

FuncMultiConverter<TSource1, TSource2, TDest> 実装によって、タイプ セーフな入力値とタイプ セーフな戻り値を提供する変換プロセスを定義できます。 この実装では、ちょうど 2 つの入力値を想定しています。

次の例は、2 つの入力 string をセミコロンで区切られた string に変換するコンバーターを構築する方法を示しています。

var converter = new FuncMultiConverter<string, string, string>(
    convert: ((string First, string Second) lines) => string.Join(';', lines.First, lines.Second),
    convertBack: (text) =>
    {
        var lines = text.Split(';');

        return (lines[0], lines[1]);
    });

convert および convertBack パラメータはどちらも省略可能であり、開発者は必要なものだけを定義できます。

Note

FuncMultiConverter は、最大 4 つの型指定された入力値をサポートします。

FuncMultiConverter<TSource1, TSource2, TDest, TParam>

FuncMultiConverter<TSource1, TSource2, TDest> 実装によって、タイプ セーフな入力値、タイプ セーフな戻り値、およびタイプ セーフな ConverterParameter を提供する変換プロセスを定義できます。 この実装では、ちょうど 2 つの入力値を想定しています。

次の例は、2 つの入力 stringConverterParameter によって指定された文字で区切られた string に変換するコンバーターを構築する方法を示しています。

var converter = new FuncMultiConverter<string, string, string, char>(
    convert: ((string First, string Second) lines, char separator) => string.Join(separator, lines.First, lines.Second),
    convertBack: (text, char separator) =>
    {
        var lines = text.Split(separator);

        return (lines[0], lines[1]);
    });

convert および convertBack パラメータはどちらも省略可能であり、開発者は必要なものだけを定義できます。

API

FuncMultiConverter 機能のソース コードは、.NET MAUI Community Toolkit の GitHub リポジトリで確認できます。