Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
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