Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
O MathExpressionConverter
é um conversor que permite aos usuários executar várias operações matemáticas. Isso funciona com um único Binding
valor, se precisares de vários valores através de um MultiBinding
, então vê MultiMathExpressionConverter
.
O Convert
calcula a cadeia de expressão definida na ConverterParameter
com uma variável e retorna um double
resultado.
O valor que é passado para o conversor será nomeado x
. Para se referir a este valor dentro da expressão que você deve usar x
(por exemplo, x / 2
dividirá o valor de entrada por 2). Quaisquer outros nomes de variáveis na expressão serão ignorados.
Propriedades BaseConverter
As seguintes propriedades são implementadas na classe base, public abstract class BaseConverter
:
Propriedade | 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
:
Propriedade | 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 . |
Sintaxe
Os exemplos a seguir mostram como adicionar um Label
que mostrará o resultado de x / 2
onde x
terá o valor de MyValue
.
XAML
Incluindo o namespace XAML
Para usar o kit de ferramentas em XAML, a seguinte xmlns
precisa ser adicionada à sua página ou vista.
xmlns:toolkit="http://schemas.microsoft.com/dotnet/2022/maui/toolkit"
Por conseguinte, 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
da seguinte forma:
<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>
Usando o MathExpressionConverter
O MathExpressionConverter
pode ser usado da seguinte forma 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.MathExpressionConverterPage">
<ContentPage.Resources>
<ResourceDictionary>
<toolkit:MathExpressionConverter x:Key="MathExpressionConverter" />
</ResourceDictionary>
</ContentPage.Resources>
<Label Text="{Binding MyValue, Converter={StaticResource MathExpressionConverter}, ConverterParameter='x/2'}" />
</ContentPage>
C#
O MathExpressionConverter
pode ser usado da seguinte forma em C#:
class MathExpressionConverterPage : ContentPage
{
public MathExpressionConverterPage()
{
var label = new Label();
label.SetBinding(
Label.TextProperty,
new Binding(
static (ViewModels vm) => vm.MyValue,
converter: new MathExpressionConverter(),
converterParameter: "x/2"));
Content = label;
}
}
Marcação C#
Nosso pacote CommunityToolkit.Maui.Markup
fornece uma maneira muito mais concisa de usar esse conversor em C#.
using CommunityToolkit.Maui.Markup;
class MathExpressionConverterPage : ContentPage
{
public MathExpressionConverterPage()
{
Content = new Label()
.Bind(
Label.TextProperty,
static (ViewModel vm) => vm.MyValue,
converter: new MathExpressionConverter(),
converterParameter: "x/2");
}
}
Operações suportadas
As seguintes operações são suportadas:
"+"
"-"
"*"
"/"
"%"
-
"?"
":"
"=="
"!="
"!"
-
"or"
ou"||"
-
"and"
ou"&&"
se você quiser usar isso em XAML, precisará escapar dos caracteres (por exemplo,"&&"
) -
"ge"
ou">="
se quiseres usar isto em XAML, precisarás fugir aos caracteres (por exemplo,">="
) -
"gt"
ou">"
se você quiser usar isso em XAML, precisará escapar dos caracteres (por exemplo,">"
) -
"le"
ou"<="
se pretenderes usar isto em XAML, precisarás escapar dos caracteres (por exemplo,"<="
) -
"lt"
ou"<"
se quiseres usar isto em XAML, precisarás escapar dos caracteres (por exemplo,"<"
) "abs"
"acos"
"asin"
"atan"
"atan2"
"ceiling"
"cos"
"cosh"
"exp"
"floor"
"ieeeremainder"
"log"
"log10"
"max"
"min"
"pow"
"round"
"sign"
"sin"
"sinh"
"sqrt"
"tan"
"tanh"
"truncate"
"^"
"pi"
"e"
"true"
"false"
Exemplos
Você pode encontrar um exemplo desse conversor em ação no .NET MAUI Community Toolkit Sample Application.
API (Interface de Programação de Aplicações)
Você pode encontrar o código-fonte para MathExpressionConverter
no repositório GitHub do .NET MAUI Community Toolkit.
.NET MAUI Community Toolkit