NumericValidationBehavior

Das NumericValidationBehavior ist ein Behavior, mit dem der Benutzer feststellen kann, ob eine Texteingabe ein gültiger numerischer Wert ist. Beispielsweise kann ein Entry Steuerelement unterschiedlich formatiert werden, je nachdem, ob eine gültige oder eine ungültige numerische Eingabe bereitgestellt wird.

Important

Die .NET MAUI Community Toolkit Behaviors legen die BindingContext eines Verhaltens nicht fest, da Verhaltensweisen über Stile freigegeben und auf mehrere Steuerelemente angewendet werden können. Weitere Informationen finden Sie unter .NET MAUI Behaviors

Syntax

Die folgenden Beispiele zeigen, wie Sie NumericValidationBehavior zu einem Entry hinzufügen und TextColor ändern, wenn die eingegebene Zahl als ungültig gilt (nicht zwischen 1 und 100).

XAML

Einbinden des XAML-Namespace

Um das Toolkit in XAML verwenden zu können, muss der folgende xmlns-Abschnitt zu Ihrer Seite oder Ansicht hinzugefügt werden:

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

Daher das Folgende:

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

Würde geändert werden, um das xmlns wie folgt einzubinden:

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

Verwenden von NumericValidationBehavior

Dies NumericValidationBehavior kann wie folgt in XAML verwendet werden:

<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.Behaviors.NumericValidationBehaviorPage">

    <ContentPage.Resources>
        <Style x:Key="InvalidEntryStyle" TargetType="Entry">
            <Setter Property="TextColor" Value="Red" />
        </Style>
        <Style x:Key="ValidEntryStyle" TargetType="Entry">
            <Setter Property="TextColor" Value="Green" />
        </Style>
    </ContentPage.Resources>

    <Entry Keyboard="Numeric">
        <Entry.Behaviors>
            <toolkit:NumericValidationBehavior 
                InvalidStyle="{StaticResource InvalidEntryStyle}"
                ValidStyle="{StaticResource ValidEntryStyle}"
                Flags="ValidateOnValueChanged"
                MinimumValue="1.0"
                MaximumValue="100.0"
                MaximumDecimalPlaces="2" />
        </Entry.Behaviors>
    </Entry>

</ContentPage>

C#

Dies NumericValidationBehavior kann wie folgt in C# verwendet werden:

class NumericValidationBehaviorPage : ContentPage
{
    public NumericValidationBehaviorPage()
    {
        var entry = new Entry
        {
            Keyboard = Keyboard.Numeric
        };

        var validStyle = new Style(typeof(Entry));
        validStyle.Setters.Add(new Setter
        {
            Property = Entry.TextColorProperty,
            Value = Colors.Green
        });

        var invalidStyle = new Style(typeof(Entry));
        invalidStyle.Setters.Add(new Setter
        {
            Property = Entry.TextColorProperty,
            Value = Colors.Red
        });

        var numericValidationBehavior = new NumericValidationBehavior
        {
            InvalidStyle = invalidStyle,
            ValidStyle = validStyle,
            Flags = ValidationFlags.ValidateOnValueChanged,
            MinimumValue = 1.0,
            MaximumValue = 100.0,
            MaximumDecimalPlaces = 2
        };

        entry.Behaviors.Add(numericValidationBehavior);

        Content = entry;
    }
}

C#-Markup

Unser CommunityToolkit.Maui.Markup Paket bietet eine viel präzisere Möglichkeit, dies Behavior in C# zu verwenden.

using CommunityToolkit.Maui.Markup;

class NumericValidationBehaviorPage : ContentPage
{
    public NumericValidationBehaviorPage()
    {
        Content = new Entry
        {
            Keyboard = Keyboard.Numeric
        }.Behaviors(new NumericValidationBehavior
        {
            InvalidStyle = new Style<Entry>(Entry.TextColorProperty, Colors.Red),
            ValidStyle = new Style<Entry>(Entry.TextColorProperty, Colors.Green),
            Flags = ValidationFlags.ValidateOnValueChanged,
            MinimumValue = 1.0,
            MaximumValue = 100.0,
            MaximumDecimalPlaces = 2
        });
    }
}

Eigenschaften

Eigentum Typ Beschreibung
MaximumDecimalPlaces double Die maximale Anzahl von Dezimalstellen, die zulässig sind.
MinimumDecimalPlaces double Die Mindestanzahl an Dezimalstellen, die zulässig sind.
MaximumValue double Der maximal zulässige numerische Wert.
MinimumValue double Der minimal zulässige numerische Wert.

ValidationBehavior-Eigenschaften

Die folgenden Eigenschaften werden in der Basisklasse implementiert: public abstract class ValidationBehavior

Eigentum Typ Beschreibung
Flags ValidationFlags Stellt einen Aufzählungswert bereit, der angibt, wie die Überprüfung behandelt wird.
ForceValidateCommand ICommand Ermöglicht es dem Benutzer, ein benutzerdefiniertes ICommand bereitzustellen, das die Validierung erzwingt.
InvalidStyle Style Das Style, das auf das Element angewendet wird, wenn die Validierung fehlschlägt.
IsNotValid bool Gibt an, ob der aktuelle Wert als ungültig betrachtet wird.
IsRunning bool Gibt an, ob die Validierung derzeit ausgeführt wird (das Warten auf einen asynchronen Aufruf abgeschlossen ist).
IsValid bool Gibt an, ob der aktuelle Wert als gültig betrachtet wird.
ValidStyle Style Der Style, der auf das Element angewendet wird, wenn die Validierung erfolgreich ist.
Value object Der zu überprüfende Wert.
ValuePropertyName string Ermöglicht es dem Benutzer, die Eigenschaft außer Kraft zu setzen, die als Wert zum Überprüfen verwendet wird.

Beispiele

Sie finden ein Beispiel für dieses Verhalten in Aktion in der .NET MAUI Community Toolkit-Beispielanwendung.

API

Sie finden den Quellcode für NumericValidationBehavior im .NET MAUI Community Toolkit GitHub Repository.