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.
.NET MAUI Community Toolkit