FuncConverter

Oferece a capacidade de definir uma implementação FuncConverter em linha ao construir a sua interface de utilizador IValueConverter. Um benefício adicional de usar esta FuncConverter implementação é que oferece uma forma segura de realizar as suas conversões. O pacote C# Markup utiliza internamente o FuncConverter para a opção de conversão em linha no método de extensão Bind.

Observação

FuncConverter Só suporta um único Binding valor; se precisar MultiBinding de suporte, consulte FuncMultiConverter.

O conversor oferece várias formas diferentes de definir a sua conversão com base na quantidade de informação necessária.

FuncConverter<TSource>

A FuncConverter<TSource> implementação permite-lhe definir um processo de conversão que fornece apenas um valor de entrada com segurança de tipo.

O exemplo seguinte mostra como construir um conversor que converte entre TimeSpan e double, expressos em segundos:

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

Ambos os convert parâmetros e convertBack são opcionais para permitir que os programadores definam apenas o que é necessário.

Notará que o método convertBack não parece ser seguro em termos de tipos neste caso.

FuncConverter<TSource, TDest>

A implementação FuncConverter<TSource, TDest> permite-lhe definir um processo de conversão que fornece um valor de entrada com segurança de tipo e um valor de retorno com segurança de tipo.

Usando o mesmo exemplo acima, podemos tornar o convertBack tipo de implementação seguro e mais fácil de ler:

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

Ambos os convert parâmetros e convertBack são opcionais para permitir que os programadores definam apenas o que é necessário.

FuncConverter<TSource, TDest, TParam>

A FuncConverter<TSource, TDest, TParam> implementação permite-lhe definir um processo de conversão que fornece um valor de entrada de tipo seguro, um valor de retorno de tipo seguro e um valor de retorno de tipo ConverterParameterseguro.

Usando o mesmo exemplo anterior, podemos incluir o ConverterParameter a partir de Binding:

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

Ambos os convert parâmetros e convertBack são opcionais para permitir que os programadores definam apenas o que é necessário.

API

Pode encontrar o código-fonte da funcionalidade FuncConverter no repositório GitHub Community Toolkit .NET MAUI.