Condividi tramite


MultiMathExpressionConverter

MultiMathExpressionConverter è un convertitore che consente agli utenti di eseguire varie operazioni matematiche con più valori tramite un oggetto MultiBinding.

Convert Calcola la stringa di espressione definita in ConverterParameter con più variabili e restituisce un double risultato.

I valori passati al convertitore verranno denominati x? dove ? è l'ordine in cui è definito in MultiBinding, qualsiasi altro nome di variabile nell'espressione verrà ignorato. Ad esempio, per esprimere il calcolo di P = V * I (potenza = volts * amps) è possibile scrivere quanto segue:

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

Sintassi

Negli esempi seguenti viene illustrato come aggiungere un oggetto Label che mostrerà il risultato della x0 + x1 + x2 posizione in cui verranno forniti i x valori nell'ordine delle MultiBinding definizioni.

XAML

Inclusione dello spazio dei nomi XAML

Per usare il toolkit in XAML, è necessario aggiungere le informazioni seguenti xmlns nella pagina o nella visualizzazione:

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

Di conseguenza:

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

Verrà modificato in modo da includere l'oggetto xmlns come indicato di seguito:

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

Uso di MultiMathExpressionConverter

Può MultiMathExpressionConverter essere usato come segue in 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#

Può MultiMathExpressionConverter essere usato come indicato di seguito in 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;
    }
}

C# Markup

Il CommunityToolkit.Maui.Markup pacchetto offre un modo molto più conciso per usare questo convertitore in 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");
    }
}

Operazioni supportate

Sono supportate le operazioni seguenti:

  • "+"
  • "-"
  • "*"
  • "/"
  • "%"
  • "abs"
  • "acos"
  • "asin"
  • "atan"
  • "atan2"
  • "soffitto"
  • "cos"
  • "cosh"
  • "exp"
  • "pavimento"
  • "ieeeremainder"
  • "log"
  • "log10"
  • "max"
  • "min"
  • "pow"
  • "round"
  • "sign"
  • "peccato"
  • "sinh"
  • "sqrt"
  • "tan"
  • "tanh"
  • "troncamento"
  • "^"
  • "pi"
  • "e"

Esempi

È possibile trovare un esempio di questo convertitore in azione nell'applicazione di esempio .NET MAUI Community Toolkit.

API

È possibile trovare il codice sorgente per MultiMathExpressionConverter over nel repository GitHub di .NET MAUI Community Toolkit.