Поделиться через


FuncConverter

Эта FuncConverter возможность позволяет определить встроенную IValueConverter реализацию при сборке пользовательского интерфейса. Дополнительное преимущество использования FuncConverter реализации заключается в том, что он предоставляет тип безопасный способ выполнения преобразований. Пакет разметки C# использует FuncConverter внутреннее значение для встроенного преобразования в методе Bind расширения.

Примечание.

FuncConverter поддерживает только одно Binding значение, если требуется MultiBindingFuncMultiConverterподдержка.

Преобразователь предлагает множество различных способов определения преобразования на основе требуемой информации.

FuncConverter<TSource>

Реализация FuncConverter<TSource> позволяет определить процесс преобразования, предоставляющий только безопасное входящее значение типа.

В следующем примере показано, как создать преобразователь, который будет преобразовывать между двумя TimeSpandouble и выраженными в секундах:

var converter = new FuncConverter<TimeSpan>(
    convert: (time) => time.TotalSeconds,
    convertBack: (value) => TimeSpan.FromSeconds((double)value));

Оба параметра являются необязательными convertconvertBack , чтобы разработчики могли определять только необходимые параметры.

Вы заметите, что convertBack метод не отображается в безопасном виде здесь.

FuncConverter<TSource, TDest>

Реализация FuncConverter<TSource, TDest> позволяет определить процесс преобразования, предоставляющий тип безопасного входящего значения и безопасное возвращаемое значение типа.

Используя тот же пример, что и выше, можно сделать convertBack тип реализации безопасным и удобным для чтения:

var converter = new FuncConverter<TimeSpan, double>(
    convert: (time) => time.TotalSeconds,
    convertBack: (seconds) => TimeSpan.FromSeconds(seconds));

Оба параметра являются необязательными convertconvertBack , чтобы разработчики могли определять только необходимые параметры.

FuncConverter<TSource, TDest, TParam>

Реализация FuncConverter<TSource, TDest, TParam> позволяет определить процесс преобразования, предоставляющий тип безопасного входящего значения, безопасное возвращаемое значение типа и тип безопасный ConverterParameter.

Используя тот же пример, что и выше, можно включить ConverterParameter из Binding:

var converter = new FuncConverter<TimeSpan, double, int>(
    convert: (time, offset) => time.TotalSeconds + offset,
    convertBack: (seconds, offset) => TimeSpan.FromSeconds(seconds - offset));

Оба параметра являются необязательными convertconvertBack , чтобы разработчики могли определять только необходимые параметры.

API

Исходный код функции FuncConverter можно найти в репозитории сообщества .NET MAUI community набор средств GitHub.