MultiMathExpressionConverter
MultiMathExpressionConverter
est un convertisseur qui permet aux utilisateurs d’effectuer différentes opérations mathématiques avec plusieurs valeurs à l’aide d’une MultiBinding
.
Convert
calcule la chaîne d’expression définie dans le ConverterParameter
avec plusieurs variables et retourne un résultat double
.
Les valeurs transmises au convertisseur seront nommées x?
, où ? est l’ordre défini dans la MultiBinding
; tous les autres noms de variables dans l’expression seront ignorés. Par exemple, pour exprimer le calcul de P = V * I
(power = volts * amps), on peut écrire ce qui suit :
<Label.Text>
<MultiBinding Converter="{StaticResource MultiMathExpressionConverter}" ConverterParameter="x0 * x1">
<Binding Path="Volts" />
<Binding Path="Amps" />
</MultiBinding>
</Label.Text>
Syntaxe
Les exemples suivants montrent comment ajouter un Label
qui affiche le résultat de x0 + x1 + x2
, où les valeurs x
seront fournies dans l’ordre des définitions de MultiBinding
.
XAML
Y compris l’espace de noms XAML
Pour utiliser le kit de ressources dans XAML, le xmlns
suivant doit être ajouté à votre page ou à votre affichage :
xmlns:toolkit="http://schemas.microsoft.com/dotnet/2022/maui/toolkit"
Il en résulte ce qui suit :
<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>
Serait modifié pour inclure le xmlns
de la manière suivante :
<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>
Utiliser MultiMathExpressionConverter
Le MultiMathExpressionConverter
peut être utilisé de la manière suivante dans 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#
Le MultiMathExpressionConverter
peut être utilisé de la manière suivante dans 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;
}
}
Balisage C#
Notre package CommunityToolkit.Maui.Markup
offre un moyen beaucoup plus concis d’utiliser ce convertisseur en 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");
}
}
Opérations prises en charge
Les opérations suivantes sont prises en charge :
- "+"
- "-"
- "*"
- "/"
- "%"
- "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"
Exemples
Vous trouverez un exemple de ce convertisseur en action dans l’Exemple d’application du kit d’outils de la communauté .NET MAUI.
API
Vous pouvez trouver le code source deMultiMathExpressionConverter
sur le référentiel du kit de ressources de la communauté .NET MAUI sur GitHub.
.NET MAUI Community Toolkit