Bagikan melalui


MultiMathExpressionConverter

MultiMathExpressionConverter adalah pengonversi yang memungkinkan pengguna untuk melakukan berbagai operasi matematika dengan beberapa nilai melalui menggunakan MultiBinding.

Convert menghitung string ekspresi yang ditentukan dalam ConverterParameter dengan beberapa variabel dan mengembalikan hasil double.

Nilai yang diteruskan ke konverter akan diberi nama x? di mana ? adalah urutan di mana ia didefinisikan dalam MultiBinding, nama variabel lain dalam ekspresi akan diabaikan. Misalnya untuk mengekspresikan perhitungan P = V * I (daya = volt * amp) berikut dapat ditulis:

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

Sintaksis

Contoh berikut menunjukkan cara menambahkan Label yang akan menunjukkan hasil x0 + x1 + x2 di mana x nilai akan disediakan dalam urutan MultiBinding definisi.

XAML

Menyertakan ruang nama XAML

Untuk menggunakan toolkit di XAML, xmlns berikut perlu ditambahkan ke halaman atau tampilan Anda:

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

Oleh karena itu hal-hal berikut:

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

Akan dimodifikasi untuk menyertakan xmlns sebagai berikut:

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

Menggunakan Pengonversi Ekspresi Matematika Multi

MultiMathExpressionConverter dapat digunakan sebagai berikut dalam 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#

MultiMathExpressionConverter dapat digunakan sebagai berikut di 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

Paket CommunityToolkit.Maui.Markup kami menyediakan cara yang jauh lebih ringkas untuk menggunakan pengonversi ini di 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");
    }
}

Operasi yang didukung

Operasi berikut ini didukung:

  • "+"
  • "-"
  • "*"
  • "/"
  • "%"
  • "?" ":"
  • "=="
  • "!="
  • "!"
  • "or" atau "||"
  • "and" atau "&&" jika Anda ingin menggunakan ini di XAML, Anda harus menghindari karakter (misalnya "&amp;&amp;")
  • "ge" atau ">=" jika Anda ingin menggunakan ini di XAML, Anda harus menghindari karakter (misalnya "&gt;=")
  • "gt" atau ">" jika Anda ingin menggunakan ini di XAML, Anda harus menghindari karakter (misalnya "&gt;")
  • "le" atau "<=" jika Anda ingin menggunakan ini di XAML, Anda harus menghindari karakter (misalnya "&lt;=")
  • "lt" atau "<" jika Anda ingin menggunakan ini di XAML, Anda harus menghindari karakter (misalnya "&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"

Contoh

Anda dapat menemukan contoh pengonversi ini dalam tindakan di aplikasi sampel .NET MAUI Community Toolkit.

Antarmuka Pemrograman Aplikasi (API)

Anda dapat menemukan kode sumber untuk MultiMathExpressionConverter di repositori GitHub .NET MAUI Community Toolkit.