FuncConverter

O FuncConverter fornece a capacidade de definir uma implementação IValueConverter embutida durante a criação da interface do usuário. Outro benefício do uso da implementação de FuncConverter é que ela oferece uma forma fortemente tipada de fazer suas conversões. O pacote de marcação C# usa o FuncConverter de internamente para a opção de conversão embutida no método de extensão Bind.

Observação

O FuncConverter só dá suporte a um só valor de Binding, caso você precise de suporte de MultiBinding para referenciar FuncMultiConverter.

O conversor oferece várias maneiras diferentes de definir sua conversão, conforme a quantidade de informações necessárias.

FuncConverter<TSource>

A implementação FuncConverter<TSource> permite que você defina um processo de conversão que fornece apenas um valor de entrada fortemente tipado.

O seguinte exemplo mostra como criar um conversor que será convertido entre um TimeSpan e um double expresso em segundos:

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

Os parâmetros convert e convertBack são opcionais, a fim de permitir que os desenvolvedores definam apenas o que é obrigatório.

Você observará que o método convertBack não aparece fortemente tipado aqui.

FuncConverter<TSource, TDest>

A implementação FuncConverter<TSource, TDest> permite que você defina um processo de conversão que fornece um valor de entrada e um valor retornado fortemente tipados.

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

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

Os parâmetros convert e convertBack são opcionais, a fim de permitir que os desenvolvedores definam apenas o que é obrigatório.

FuncConverter<TSource, TDest, TParam>

A implementação FuncConverter<TSource, TDest, TParam> permite que você defina um processo de conversão que fornece um valor de entrada, um valor retornado e um ConverterParameter fortemente tipados.

Usando o mesmo exemplo acima, podemos incluir o ConverterParameter da Binding:

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

Os parâmetros convert e convertBack são opcionais, a fim de permitir que os desenvolvedores definam apenas o que é obrigatório.

API

Encontre o código-fonte do recurso FuncConverter no repositório do GitHub do Kit de Ferramentas da Comunidade do .NET MAUI.