MultiMathExpression Converter

Het MultiMathExpressionConverter is een conversieprogramma waarmee gebruikers verschillende wiskundige bewerkingen met meerdere waarden kunnen uitvoeren met behulp van een MultiBinding.

Convert berekent de expressiestring die is gedefinieerd in de ConverterParameter waarin meerdere variabelen voorkomen en retourneert een double resultaat.

De waarden die aan het conversieprogramma worden doorgegeven, krijgen de naam x? waar? is de volgorde waarin deze is gedefinieerd in de MultiBinding; alle andere variabelenamen in de expressie worden genegeerd. Om bijvoorbeeld de berekening van P = V * I (macht = volt * amps) uit te drukken, kan het volgende worden geschreven:

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

Syntax

In de volgende voorbeelden ziet u hoe u een Label waarde toevoegt die het resultaat weergeeft van x0 + x1 + x2 waar de x waarden worden opgegeven in de volgorde van de MultiBinding definities.

XAML

Inclusief de XAML-naamruimte

Als u de toolkit in XAML wilt gebruiken, moet de volgende xmlns worden toegevoegd aan uw pagina of weergave:

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

Daarom volgt het volgende:

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

Zou als volgt worden gewijzigd om de xmlns op te nemen:

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

MultiMathExpression Converter gebruiken

De MultiMathExpressionConverter kan als volgt worden gebruikt 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#

De MultiMathExpressionConverter kan als volgt worden gebruikt 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#-markeringen

Ons CommunityToolkit.Maui.Markup pakket biedt een veel beknoptere manier om dit conversieprogramma in C# te gebruiken.

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");
    }
}

Ondersteunde bewerkingen

De volgende bewerkingen worden ondersteund:

  • "+"
  • "-"
  • "*"
  • "/"
  • "%"
  • "?" ":"
  • "=="
  • "!="
  • "!"
  • "or" of "||"
  • "and" of "&&" als u dit in XAML wilt gebruiken, moet u de tekens escapen (bijvoorbeeld "&amp;&amp;")
  • "ge" of ">=" als u dit in XAML wilt gebruiken, moet u de tekens escapen (bijvoorbeeld "&gt;=")
  • "gt" of ">" als u dit in XAML wilt gebruiken, moet u de tekens escapen (bijvoorbeeld "&gt;")
  • "le" of "<=" als u dit in XAML wilt gebruiken, moet u de tekens escapen (bijvoorbeeld "&lt;=")
  • "lt" of "<" als u dit in XAML wilt gebruiken, moet u de tekens escapen (bijvoorbeeld "&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"

Examples

U vindt een voorbeeld van dit conversieprogramma in actie in de .NET MAUI Community Toolkit Sample Application.

API

U vindt de broncode voor MultiMathExpressionConverter in de .NET MAUI Community Toolkit GitHub opslagplaats.