Conversores de .NET MAUI

As associações de dados da interface do usuário de aplicativo de várias plataformas do .NET (.NET MAUI) geralmente transferem dados de uma propriedade de origem para uma propriedade de destino e, em alguns casos, da propriedade de destino para a propriedade de origem. Essa transferência é simples quando as propriedades de origem e destino são do mesmo tipo ou quando um tipo pode ser convertido para o outro tipo por meio de uma conversão implícita. Quando esse não for o caso, uma conversão de tipo deve ocorrer.

Para obter mais informações sobre conversores, consulte a documentação .NET MAUI.

Conversores do Kit de Ferramentas da Comunidade .NET MAUI

O .NET MAUI Community Toolkit fornece uma coleção de conversores pré-criados e reutilizáveis para facilitar a vida dos desenvolvedores. Aqui estão os conversores fornecidos pelo kit de ferramentas:

Conversor Descrição
BoolToObjectConverter O BoolToObjectConverter é um conversor que permite que os usuários convertam uma bool vinculação de valor para um objeto específico.
ByteArrayToImageSourceConverter O ByteArrayToImageSourceConverter é um conversor que permite ao usuário converter um valor de entrada de uma matriz byte e retorna um ImageSource.
ColorToBlackOrWhiteConverter O ColorToBlackOrWhiteConverter é um conversor unidirecional que permite que os usuários convertam uma entrada Color em um valor monocromático de um Colors.Black ou Colors.White.
ColorToByteAlphaConverter O ColorToByteAlphaConverter é um conversor unidirecional que permite aos usuários converter um Color de entrada para o componente alfa em um valor entre 0 e 255.
ColorToByteBlueConverter O ColorToByteBlueConverter é um conversor unidirecional que permite aos usuários converter um Color de entrada no componente azul como um valor de 0 a 255.
ColorToByteGreenConverter O ColorToByteGreenConverter é um conversor unidirecional que permite aos usuários converter um valor de entrada Color para o componente verde em um valor entre 0 e 255.
ColorToByteRedConverter O ColorToByteRedConverter é um conversor unidirecional que permite aos usuários converter um(a) Color de entrada no componente vermelho como um valor entre 0 e 255.
ColorToCmykStringConverter O ColorToCmykStringConverter é um conversor unidirecional que permite aos usuários converter uma vinculação de valor Color em seu equivalente string em CMYK.
ColorToCmykaStringConverter O ColorToCmykaStringConverter é um conversor unidirecional que permite que os usuários convertam uma Color vinculação de valor em seu equivalente string em CMYKA.
ColorToColorForTextConverter O ColorToColorForTextConverter é um conversor unidirecional que permite que os usuários convertam uma entrada Color em um valor monocromático de qualquer um Colors.Black ou Colors.White com base em se ele é determinado como sendo escuro para o olho humano.
ColorToDegreeHueConverter O ColorToDegreeHueConverter é um conversor unidirecional que permite aos usuários converter um(a) Color de entrada no componente hue, como um valor entre 0 e 360.
ColorToGrayScaleColorConverter O ColorToGrayScaleColorConverter é um conversor unidirecional que permite aos usuários converter um Color de entrada em um Color em escala de cinza.
ColorToHexRgbStringConverter O ColorToHexRgbStringConverter é um conversor que permite aos usuários converter uma vinculação de valor Color em seu equivalente hexadecimal RGB string.
ColorToHexRgbaStringConverter O ColorToHexRgbaStringConverter é um conversor que permite aos usuários converter uma vinculação de valor Color em seu equivalente hexadecimal RGBA string.
ColorToHslStringConverter O ColorToHslStringConverter é um conversor unidirecional que permite aos usuários converter um vínculo de valor Color em seu equivalente HSL string.
ColorToHslaStringConverter O ColorToHslaStringConverter é um conversor unidirecional que permite aos usuários converter um vínculo de valor Color em seu equivalente HSLA string.
ColorToInverseColorConverter O ColorToInverseColorConverter é um conversor unidirecional que permite aos usuários converter um Color de entrada no seu inverso.
ColorToPercentBlackKeyConverter O ColorToPercentBlackKeyConverter é um conversor unidirecional que permite aos usuários converter um Color de entrada no componente key em um valor entre 0 e 1.
ColorToPercentCyanConverter O ColorToPercentCyanConverter é um conversor unidirecional que permite aos usuários converter um valor de entrada Color para o componente ciano em um valor entre 0 e 1.
ColorToPercentMagentaConverter O ColorToPercentMagentaConverter é um conversor unidirecional que permite aos usuários converter um Color de entrada para o componente magenta como um valor de 0 a 1.
ColorToPercentYellowConverter É ColorToPercentYellowConverter um conversor unidirecional que permite que os usuários convertam uma entrada Color no componente amarelo como um valor entre 0 e 1.
ColorToRgbStringConverter O ColorToRgbStringConverter é um conversor que permite aos usuários converter uma vinculação de valor Color para seu equivalente RGB string.
ColorToRgbaStringConverter O ColorToRgbaStringConverter é um conversor unidirecional que permite aos usuários converter uma vinculação de valor Color em seu equivalente RGBA string.
CompareConverter O CompareConverter é um conversor unidirecional que recebe um valor de entrada que implementa IComparable, compara-o a um valor especificado e retorna o resultado da comparação.
DateTimeOffsetConverter O DateTimeOffsetConverter é um conversor que permite que os usuários convertam um DateTimeOffset em um DateTime
DoubleToIntConverter O DoubleToIntConverter é um conversor que permite aos usuários converter um valor double de entrada em um int e vice-versa. Opcionalmente, o usuário pode fornecer um multiplicador para a conversão por meio da Ratio propriedade.
EnumToBoolConverter EnumToBoolConverter é um conversor unidirecional que permite converter um Enum no bool correspondente, com base em ele ser igual a um conjunto de valores enum fornecidos. É útil ao associar uma coleção de valores que representam um tipo de enumeração a uma propriedade de controle booliano como a IsVisible propriedade.
EnumToIntConverter EnumToIntConverter é um conversor que permite converter um Enum padrão (que estende int) para seu tipo primitivo subjacente int. É útil ao associar uma coleção de valores que representam um tipo de enumeração com numeração padrão a um controle como um Picker.
ImageResourceConverter O ImageResourceConverter é um conversor que converte o ID de recurso de imagem incorporada em sua ImageSource.
IndexToArrayItemConverter O IndexToArrayItemConverter é um conversor que permite aos usuários converter um vínculo de valor int em um item de um array. O int valor associado a dados representa o indexador usado para acessar a matriz. A matriz é passada por meio da ConverterParameter.
IntToBoolConverter O IntToBoolConverter é um conversor que permite aos usuários converter um valor int de entrada em um bool e vice-versa.
InvertedBoolConverter O InvertedBoolConverter é um conversor que permite aos usuários converter um bool em seu inverso — true torna-se false e vice-versa.
IsEqualConverter O IsEqualConverter é um conversor unidirecional que retorna um bool que indica se o valor da vinculação é igual a outro valor especificado.
IsInRangeConverter O IsInRangeConverter é um conversor unidirecional que recebe um valor de entrada que implementa IComparable, um valor mínimo e um valor máximo, e retorna o resultado de o valor estar entre o valor mínimo e o valor máximo.
IsListNotNullOrEmptyConverter O IsListNotNullOrEmptyConverter é um conversor unidirecional que converte IEnumerable em um valor bool.
IsListNullOrEmptyConverter O IsListNullOrEmptyConverter é um conversor unidirecional que converte IEnumerable em um valor bool.
IsNotEqualConverter O IsNotEqualConverter é um conversor unidirecional que retorna um bool que indica se o valor de associação não é igual a outro valor especificado.
IsNullConverter O IsNullConverter é um conversor que permite aos usuários converter uma associação recebida em um valor bool. Esse valor representa se o valor da associação de entrada é nulo.
IsNotNullConverter O IsNotNullConverter é um conversor que permite aos usuários converter uma vinculação de entrada em um valor bool. Esse valor representa se o valor de associação de entrada não for nulo.
IsStringNotNullOrEmptyConverter O IsStringNotNullOrEmptyConverter é um conversor unidirecional que retorna um bool que indica se o valor de associação não é nulo e não um string.Empty.
IsStringNotNullOrWhiteSpaceConverter O IsStringNotNullOrWhiteSpaceConverter é um conversor unidirecional que retorna um bool indicando se o valor vinculado não é nulo, não é um string.Empty e não contém apenas caracteres em branco.
IsStringNullOrEmptyConverter O IsStringNullOrEmptyConverter é um conversor unidirecional que retorna um bool indicando se o valor de vinculação é nulo ou string.Empty.
IsStringNullOrWhiteSpaceConverter IsStringNullOrWhiteSpaceConverter é um conversor unidirecional que retorna um bool indicando se o valor do vínculo é nulo, string.Empty ou contém apenas caracteres de espaço em branco.
ItemTappedEventArgsConverter O ItemTappedEventArgsConverter é um conversor que permite aos usuários extrair o valor de Item de um objeto ItemTappedEventArgs. Posteriormente, ele pode ser usado em combinação com EventToCommandBehavior.
ListToStringConverter O ListToStringConverter é um conversor unidirecional que retorna uma concatenação dos elementos de uma coleção, usando o separador especificado entre cada elemento.
MathExpressionConverter O MathExpressionConverter é um conversor que permite que os usuários realizem várias operações matemáticas.
MultiConverter O MultiConverter converte um valor de entrada usando todos os conversores de entrada na sequência.
MultiMathExpressionConverter O MultiMathExpressionConverter é um conversor que permite aos usuários realizar várias operações matemáticas com múltiplos valores por meio de um MultiBinding.
SelectedItemEventArgsConverter O SelectedItemEventArgsConverter é um conversor que permite aos usuários extrair o valor de Item de um objeto SelectedItemEventArgs. Posteriormente, ele pode ser usado em combinação com EventToCommandBehavior.
StateToBoolConverter O StateToBoolConverter é um conversor de mão única que retorna um resultado boolean com base em o valor fornecido ser de um LayoutState específico.
StringToListConverter O StringToListConverter é um conversor unidirecional que retorna um conjunto de substrings ao dividir a string de entrada com base em um ou mais separadores.
TextCaseConverter O TextCaseConverter é um conversor unidirecional que permite aos usuários alterar a capitalização de uma vinculação de entrada do tipo string. A propriedade Type é usada para definir que tipo de capitalização será aplicada à string.
VariableMultiValueConverter O VariableMultiValueConverter é um conversor que permite aos usuários converter valores de bool por meio de um MultiBinding em um único bool.

Criar um conversor do Kit de Ferramentas da Comunidade .NET MAUI

O .NET MAUI Community Toolkit fornece implementações de tipo seguro da interface IValueConverter fornecida pelo .NET MAUI, o que torna mais fácil para os desenvolvedores escrever conversores seguros de tipo mais concisos. O kit de ferramentas fornece as seguintes opções

Conversor bidirecional

A BaseConverter classe fornece aos desenvolvedores a capacidade de definir o tipo de valor de entrada e também o tipo de valor de saída para uma IValueConverter implementação que dá suporte a uma associação bidirecional. O exemplo a seguir mostra como criar um conversor que converterá um bool valor em Colors.Green se true e Colors.Red se false.

public class BoolToColorConverter : BaseConverter<bool, Color>
{
    public override Color DefaultConvertReturnValue { get; set; } = Colors.Orange;

    public override bool DefaultConvertBackReturnValue { get; set; } = false;

    public override string ConvertFrom(bool value, CultureInfo? culture)
    {
        return value ? Colors.Green : Colors.Red;
    }

    public override int ConvertBackTo(Color value, CultureInfo? culture)
    {
        return value == Colors.Green;
    }
}

O DefaultConvertReturnValue valor será usado pela implementação base e retornado se uma exceção for lançada dentro do ConvertFrom método.

O DefaultConvertBackReturnValue valor será usado pela implementação base e retornado se uma exceção for lançada dentro do ConvertBackTo método.

Aviso

O conversor gerará um ArgumentException se os valores de entrada ou saída não forem do tipo esperado. O lançamento de exceções pode ser desativado ao definir CommunityToolkit.Maui.Options.ShouldSuppressExceptionsInConverters como false.

Conversor unidirecional

A BaseConverterOneWay classe fornece aos desenvolvedores a capacidade de definir o tipo de valor de entrada e também o tipo de valor de saída para uma IValueConverter implementação que dá suporte a uma associação unidirecional. O exemplo a seguir mostra como criar um conversor que converterá um bool valor em Colors.Green se true e Colors.Red se false.

public class BoolToColorConverter : BaseConverterOneWay<bool, Color>
{
    public override Color DefaultConvertReturnValue { get; set; } = Colors.Orange

    public override string ConvertFrom(bool value, CultureInfo? culture)
    {
        return value ? Colors.Green : Colors.Red;
    }
}

O DefaultConvertReturnValue valor será usado pela implementação base e retornado se uma exceção for lançada dentro do ConvertFrom método.

Aviso

O conversor gerará um ArgumentException se os valores de entrada ou saída não forem do tipo esperado. O lançamento de exceções pode ser desativado ao definir CommunityToolkit.Maui.Options.ShouldSuppressExceptionsInConverters como false. O conversor lançará um NotSupportedException se usado em uma associação bidirecional.