MultiMathExpressionConverter
Jest to MultiMathExpressionConverter
konwerter, który umożliwia użytkownikom wykonywanie różnych operacji matematycznych z wieloma wartościami przy użyciu elementu MultiBinding
.
Funkcja Convert
oblicza ciąg wyrażenia zdefiniowany w obiekcie ConverterParameter
z wieloma zmiennymi i zwraca double
wynik.
Wartości przekazywane do konwertera będą mieć nazwę x?
gdzie ? to kolejność, w której jest zdefiniowana w elemecie MultiBinding
, wszystkie inne nazwy zmiennych w wyrażeniu zostaną zignorowane. Na przykład aby wyrazić obliczenie P = V * I
(moc = wolty * amps) można zapisać następujące elementy:
<Label.Text>
<MultiBinding Converter="{StaticResource MultiMathExpressionConverter}" ConverterParameter="x0 * x1">
<Binding Path="Volts" />
<Binding Path="Amps" />
</MultiBinding>
</Label.Text>
Składnia
W poniższych przykładach pokazano, jak dodać obiekt Label
, który pokaże wynik x0 + x1 + x2
, w którym x
wartości zostaną podane w kolejności MultiBinding
definicji.
XAML
Dołączanie przestrzeni nazw XAML
Aby można było używać zestawu narzędzi w języku XAML, należy dodać następujące xmlns
elementy do strony lub widoku:
xmlns:toolkit="http://schemas.microsoft.com/dotnet/2022/maui/toolkit"
W związku z tym następujące elementy:
<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>
Zostanie zmodyfikowana tak, aby zawierała następujące xmlns
elementy:
<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>
Korzystanie z obiektu MultiMathExpressionConverter
Można MultiMathExpressionConverter
go użyć w następujący sposób w języku 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#
Można MultiMathExpressionConverter
go użyć w następujący sposób w języku 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;
}
}
Znaczniki języka C#
Nasz CommunityToolkit.Maui.Markup
pakiet zapewnia znacznie bardziej zwięzły sposób używania tego konwertera w języku 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");
}
}
Obsługiwane operacje
Obsługiwane są następujące operacje:
- "+"
- "-"
- "*"
- "/"
- "%"
- "abs"
- "acos"
- "asin"
- "atan"
- "atan2"
- "Sufit"
- "cos"
- "cosh"
- "exp"
- "podłoga"
- "ieeeremainder"
- "dziennik"
- "log10"
- "max"
- "min"
- "pow"
- "round"
- "znak"
- "sin"
- "sinh"
- "sqrt"
- "tan"
- "tanh"
- "obcinanie"
- "^"
- "pi"
- "e"
Przykłady
Przykład tego konwertera można znaleźć w aplikacji przykładowej zestawu narzędzi .NET MAUI Community Toolkit.
interfejs API
Kod źródłowy można MultiMathExpressionConverter
znaleźć w repozytorium GitHub zestawu narzędzi .NET MAUI Community Toolkit.
.NET MAUI Community Toolkit