Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
O VariableMultiValueConverter é um conversor que permite aos usuários converter valores de bool por meio de um MultiBinding em um único bool. Ele faz isso permitindo que eles especifiquem se Todos, Qualquer, Nenhum ou um número específico de valores são verdadeiros, conforme especificado em ConditionType.
O método Convert retorna o values fornecido convertido em um resultado bool geral com base no ConditionType definido.
O método ConvertBack só retornará um resultado se o valor ConditionType for definido como MultiBindingCondition.All.
Propriedades do BaseConverter
As seguintes propriedades são implementadas na classe base: public abstract class BaseConverter
| Property | Descrição |
|---|---|
DefaultConvertReturnValue |
Valor padrão a ser retornado quando IValueConverter.Convert(object?, Type, object?, CultureInfo?) lança um Exception. Esse valor é usado quando CommunityToolkit.Maui.Options.ShouldSuppressExceptionsInConverters é definido como true. |
DefaultConvertBackReturnValue |
Valor padrão a ser retornado quando IValueConverter.ConvertBack(object?, Type, object?, CultureInfo?) lança um Exception. Esse valor é usado quando CommunityToolkit.Maui.Options.ShouldSuppressExceptionsInConverters é definido como true. |
Propriedades de ICommunityToolkitValueConverter
As seguintes propriedades são implementadas no public interface ICommunityToolkitValueConverter:
| Property | Tipo | Descrição |
|---|---|---|
DefaultConvertReturnValue |
object? |
Valor padrão a ser retornado quando IValueConverter.Convert(object?, Type, object?, CultureInfo?) lança um Exception. Esse valor é usado quando CommunityToolkit.Maui.Options.ShouldSuppressExceptionsInConverters é definido como true. |
DefaultConvertBackReturnValue |
object? |
Valor padrão a ser retornado quando IValueConverter.ConvertBack(object?, Type, object?, CultureInfo?) lança um Exception. Esse valor é usado quando CommunityToolkit.Maui.Options.ShouldSuppressExceptionsInConverters é definido como true. |
Syntax
Os exemplos a seguir mostram como tornar um Label invisível com base no fato de que pelo menos 2 dos valores em um MultiBinding resultem em verdadeiro.
XAML
Incluir o namespace XAML
Para usar o kit de ferramentas no XAML, o xmlns a seguir precisa ser adicionado à sua página ou exibição:
xmlns:toolkit="http://schemas.microsoft.com/dotnet/2022/maui/toolkit"
Portanto, o seguinte:
<ContentPage
x:Class="CommunityToolkit.Maui.Sample.Pages.MyPage"
xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml">
</ContentPage>
Seria modificado para incluir o xmlns conforme o seguinte:
<ContentPage
x:Class="CommunityToolkit.Maui.Sample.Pages.MyPage"
xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:toolkit="http://schemas.microsoft.com/dotnet/2022/maui/toolkit">
</ContentPage>
Como usar o VariableMultiValueConverter
Pode VariableMultiValueConverter ser usado da seguinte maneira em XAML:
<ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:toolkit="http://schemas.microsoft.com/dotnet/2022/maui/toolkit"
x:Class="CommunityToolkit.Maui.Sample.Pages.Converters.VariableMultiValueConverterPage">
<ContentPage.Resources>
<ResourceDictionary>
<toolkit:VariableMultiValueConverter
x:Key="VariableMultiValueConverter"
ConditionType="LessThan"
Count="2" />
</ResourceDictionary>
</ContentPage.Resources>
<Label Text="At least 2 toppings must be selected.">
<Label.IsVisible>
<MultiBinding Converter="{StaticResource VariableMultiValueConverter}">
<Binding Path="IsCheeseSelected" />
<Binding Path="IsHamSelected" />
<Binding Path="IsPineappleSelected" />
</MultiBinding>
</Label.IsVisible>
</Label>
</ContentPage>
C#
Pode VariableMultiValueConverter ser usado da seguinte maneira em C#:
class VariableMultiValueConverterPage : ContentPage
{
public VariableMultiValueConverterPage()
{
var label = new Label
{
Text = "At least 2 toppings must be selected."
};
label.SetBinding(
Label.IsVisibleProperty,
new MultiBinding
{
Converter = new VariableMultiValueConverter
{
ConditionType = MultiBindingCondition.LessThan,
Count = 2
},
Bindings = new List<BindingBase>
{
new Binding(static (ViewModel vm) => vm.IsCheeseSelected),
new Binding(static (ViewModel vm) => vmIsHamSelected),
new Binding(static (ViewModel vm) => vmIsPineappleSelected)
}
});
Content = label;
}
}
Marcação em C#
Nosso CommunityToolkit.Maui.Markup pacote fornece uma maneira muito mais concisa de usar esse conversor em C#.
using CommunityToolkit.Maui.Markup;
class VariableMultiValueConverterPage : ContentPage
{
public VariableMultiValueConverterPage()
{
Content = new Label()
.Text("At least 2 toppings must be selected.")
.Bind(
Label.IsVisibleProperty,
new List<BindingBase>
{
new Binding(static (ViewModel vm) => vm.IsCheeseSelected),
new Binding(static (ViewModel vm) => vm.IsHamSelected),
new Binding(static (ViewModel vm) => vm.IsPineappleSelected)
},
converter: new VariableMultiValueConverter
{
ConditionType = MultiBindingCondition.LessThan,
Count = 2
});
}
}
Propriedades
| Property | Tipo | Descrição |
|---|---|---|
| ConditionType | MultiBindingCondition |
Indica quantos valores devem estar true fora dos valores boolianos fornecidos no MultiBinding. |
| Count | int |
O número de valores que devem ser verdadeiros ao usar ConditionTypeGreaterThan, LessThan ou Exact. |
MultiBindingCondition
A enumeração MultiBindingCondition define os seguintes membros:
-
None- Nenhum dos valores deve ser verdadeiro. -
All- Todos os valores devem ser verdadeiros. -
Any- Qualquer um dos valores deve ser verdadeiro. -
Exact- O número exato configurado naCountpropriedade deve ser verdadeiro. -
GreaterThan- Maior que o número configurado naCountpropriedade seja verdadeiro. -
LessThan- Deve ser verdadeiro que o valor seja menor que o número configurado na propriedadeCount.
Exemplos
Você pode encontrar um exemplo desse conversor em ação no aplicativo de exemplo .NET MAUI Community Toolkit.
API
O código-fonte do VariableMultiValueConverter pode ser encontrado no repositório GitHub do .NET MAUI Community Toolkit.
.NET MAUI Community Toolkit