NumericValidationBehavior

NumericValidationBehavior adalah Behavior yang memungkinkan pengguna untuk menentukan apakah input teks adalah nilai numerik yang valid. Misalnya, Entry kontrol dapat ditata secara berbeda tergantung pada apakah input numerik yang valid atau tidak valid disediakan.

Penting

Perilaku Toolkit Komunitas .NET MAUI tidak mengatur BindingContext perilaku, karena perilaku dapat dibagikan dan diterapkan ke beberapa kontrol melalui gaya. Untuk informasi selengkapnya, lihat Perilaku MAUI .NET

Sintaks

Contoh berikut menunjukkan cara menambahkan NumericValidationBehavior ke Entry dan mengubah TextColor kapan angka yang dimasukkan dianggap tidak valid (bukan antara 1 dan 100).

XAML

Menyertakan namespace XAML

Untuk menggunakan toolkit di XAML, hal berikut xmlns 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 NumericValidationBehavior

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

NumericValidationBehavior dapat digunakan sebagai berikut di C#:

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

Paket kami CommunityToolkit.Maui.Markup menyediakan cara yang jauh lebih ringkas untuk menggunakan ini Behavior di C#.

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
        });
    }
}

Properti

Properti Tipe Deskripsi
MaximumDecimalPlaces double Jumlah maksimum tempat desimal yang akan diizinkan.
MinimumDecimalPlaces double Jumlah minimum tempat desimal yang akan diizinkan.
MaximumValue double Nilai numerik maksimum yang akan diizinkan.
MinimumValue double Nilai numerik minimum yang akan diizinkan.

Properti ValidasiBehavior

Properti berikut diimplementasikan di kelas dasar, public abstract class ValidationBehavior:

Properti Tipe Deskripsi
Flags ValidationFlags Menyediakan nilai enumerasi yang menentukan cara menangani validasi.
ForceValidateCommand ICommand Memungkinkan pengguna untuk memberikan kustom ICommand yang menangani validasi paksa.
InvalidStyle Style untuk Style diterapkan ke elemen ketika validasi gagal.
IsNotValid bool Menunjukkan apakah nilai saat ini dianggap tidak valid atau tidak.
IsRunning bool Menunjukkan apakah validasi sedang berlangsung atau tidak sekarang (menunggu panggilan asinkron selesai).
IsValid bool Menunjukkan apakah nilai saat ini dianggap valid atau tidak.
ValidStyle Style Style untuk diterapkan ke elemen ketika validasi berhasil.
Value object Nilai yang akan divalidasi.
ValuePropertyName string Memungkinkan pengguna untuk mengambil alih properti yang akan digunakan sebagai nilai untuk memvalidasi.

Contoh

Anda dapat menemukan contoh perilaku ini dalam tindakan di Aplikasi Sampel Toolkit Komunitas .NET MAUI.

API

Anda dapat menemukan kode sumber untuk NumericValidationBehavior lebih pada repositori GitHub .NET MAUI Community Toolkit.