Partager via


MultiMathExpressionConverter

MultiMathExpressionConverter est un convertisseur qui permet aux utilisateurs de réaliser diverses opérations mathématiques avec plusieurs valeurs à l’aide d’un MultiBinding.

Le Convert calcule la chaîne d'expression définie dans le ConverterParameter avec plusieurs variables et renvoie un résultat double.

Les valeurs transmises au convertisseur seront nommées x? où ? est l’ordre dans lequel il est défini dans le MultiBinding, tous les autres noms de variables dans l’expression seront ignorés. Par exemple, pour exprimer le calcul de P = V * I (power = volts * amps), les éléments suivants peuvent être écrits :

<Label.Text>
    <MultiBinding Converter="{StaticResource MultiMathExpressionConverter}" ConverterParameter="x0 * x1">
        <Binding Path="Volts" />
        <Binding Path="Amps" />
    </MultiBinding>
</Label.Text>

Syntaxe

Les exemples suivants montrent comment ajouter un Label qui affichera le résultat de x0 + x1 + x2, où les valeurs de x seront fournies dans l'ordre des définitions de MultiBinding.

XAML

Y compris l’espace de noms XAML

Pour utiliser le kit de ressources en XAML, le xmlns suivant doit être ajouté à votre page ou vue :

xmlns:toolkit="http://schemas.microsoft.com/dotnet/2022/maui/toolkit"

Il en résulte ce qui suit :

<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>

Serait modifié pour inclure la xmlns comme suit :

<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>

Utilisation de MultiMathExpressionConverter

Vous pouvez utiliser le MultiMathExpressionConverter comme suit en 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.MultiMathExpressionConverterPage">

    <ContentPage.Resources>
        <ResourceDictionary>
            <toolkit:MultiMathExpressionConverter x:Key="MultiMathExpressionConverter" />
        </ResourceDictionary>
    </ContentPage.Resources>

    <Label HorizontalOptions="Center">
        <Label.Text>
            <MultiBinding Converter="{StaticResource MultiMathExpressionConverter}" ConverterParameter="x0 + x1 + x2">
                <Binding Path="X0" />
                <Binding Path="X1" />
                <Binding Path="X2" />
            </MultiBinding>
        </Label.Text>
    </Label>

</ContentPage>

C#

Le MultiMathExpressionConverter peut être utilisé comme suit en C# :

class MultiMathExpressionConverterPage : ContentPage
{
    public MultiMathExpressionConverterPage()
    {
        var label = new Label
        {
            HorizontalOptions = LayoutOptions.Center
        };

        label.SetBinding(
            Label.TextProperty,
            new MultiBinding
            {
                Converter = new MultiMathExpressionConverter(),
                ConverterParameter = "x0 + x1 + x2",
                Bindings = new List<BindingBase>
                {
                    new Binding(static (ViewModel vm) => vm.X0),
                    new Binding(static (ViewModel vm) => vm.X1),
                    new Binding(static (ViewModel vm) => vm.X2)
                }
            });

        Content = label;
    }
}

Balisage C#

Notre CommunityToolkit.Maui.Markup package offre un moyen beaucoup plus concis d’utiliser ce convertisseur en C#.

class MultiMathExpressionConverterPage : ContentPage
{
    public MultiMathExpressionConverterPage()
    {
        Content = new Label()
            .CenterHorizontal()
            .Bind(
                Label.TextProperty,
                new List<BindingBase>
                {
                    new Binding(static (ViewModel vm) => vmX0),
                    new Binding(static (ViewModel vm) => vmX1),
                    new Binding(static (ViewModel vm) => vmX2)
                },
                converter: new MultiMathExpressionConverter(),
                converterParameter: "x0 + x1 + x2");
    }
}

Opérations prises en charge

Les opérations suivantes sont prises en charge :

  • "+"
  • "-"
  • "*"
  • "/"
  • "%"
  • "?"":"
  • "=="
  • "!="
  • "!"
  • "or" ou "||"
  • "and" ou "&&" si vous souhaitez utiliser ce code en XAML, vous devez échapper aux caractères (par exemple "&amp;&amp;")
  • "ge" ou ">=" si vous souhaitez utiliser ce code en XAML, vous devez échapper aux caractères (par exemple "&gt;=")
  • "gt" ou ">" si vous souhaitez utiliser ce code en XAML, vous devez échapper aux caractères (par exemple "&gt;")
  • "le" ou "<=" si vous souhaitez utiliser ce code en XAML, vous devez échapper aux caractères (par exemple "&lt;=")
  • "lt" ou "<" si vous souhaitez utiliser ce code en XAML, vous devez échapper aux caractères (par exemple "&lt;")
  • "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"

Exemples

Vous trouverez un exemple de ce convertisseur en action dans l’exemple d’application .NET MAUI Community Toolkit.

API (Interface de Programmation d'Applications)

Vous pouvez trouver le code source de MultiMathExpressionConverter dans le dépôt GitHub du .NET MAUI Community Toolkit .