Sdílet prostřednictvím


MultiMathExpressionConverter

Jedná se MultiMathExpressionConverter o převaděč, který umožňuje uživatelům provádět různé matematické operace s více hodnotami pomocí .MultiBinding

Vypočítá Convert řetězec výrazu definovaný v několika ConverterParameter proměnných a vrátí double výsledek.

Hodnoty předané převaděči budou pojmenovány x? kde ? je pořadí, ve kterém je definováno ve výrazu MultiBinding, budou ignorovány všechny ostatní názvy proměnných ve výrazu. Chcete-li například vyjádřit výpočet P = V * I (napájení = volty * amps), lze napsat následující:

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

Syntaxe

Následující příklady ukazují, jak přidat Label , který zobrazí výsledek x0 + x1 + x2 místa, kde x budou hodnoty zadány v pořadí MultiBinding definic.

XAML

Zahrnutí oboru názvů XAML

Pokud chcete použít sadu nástrojů v XAML, musíte do stránky nebo zobrazení přidat následující xmlns položky:

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

Proto platí následující:

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

Bylo by změněno tak, aby zahrnovalo xmlns následující:

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

Použití MultiMathExpressionConverter

V XAML je možné ho MultiMathExpressionConverter použít následujícím způsobem:

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

V MultiMathExpressionConverter jazyce C# je možné ho použít následujícím způsobem:

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(nameof(ViewModel.X0)),
                    new Binding(nameof(ViewModel.X1)),
                    new Binding(nameof(ViewModel.X2))
                }
            });

        Content = label;
    }
}

Revize jazyka C#

Náš CommunityToolkit.Maui.Markup balíček nabízí mnohem stručnější způsob použití tohoto převaděče v jazyce C#.

class MultiMathExpressionConverterPage : ContentPage
{
    public MultiMathExpressionConverterPage()
    {
        Content = new Label()
            .CenterHorizontal()
            .Bind(
                Label.TextProperty,
                new List<BindingBase>
                {
                    new Binding(nameof(ViewModel.X0)),
                    new Binding(nameof(ViewModel.X1)),
                    new Binding(nameof(ViewModel.X2))
                },
                converter: new MultiMathExpressionConverter(),
                converterParameter: "x0 + x1 + x2");
    }
}

Podporované operace

Podporují se následující operace:

  • "+"
  • "-"
  • "*"
  • "/"
  • "%"
  • "abs"
  • "acos"
  • "asin"
  • "atan"
  • "atan2"
  • "strop"
  • "cos"
  • "cosh"
  • "exp"
  • "floor"
  • "ieeeremainder"
  • "log"
  • "log10"
  • "max"
  • "min"
  • "pow"
  • "round"
  • "podepsat"
  • "sin"
  • "sinh"
  • "sqrt"
  • "tan"
  • "tanh"
  • "truncate"
  • "^"
  • "pí"
  • "e"

Příklady

Příklad tohoto převaděče najdete v akci v ukázkové aplikaci .NET MAUI Community Toolkit.

rozhraní API

Zdrojový kód MultiMathExpressionConverter najdete v úložišti .NET MAUI Community Toolkit na GitHubu.