Sdílet prostřednictvím


Krokovač

Uživatelské rozhraní aplikace .NET s více platformami (.NET MAUI) Stepper umožňuje vybrat číselnou hodnotu z rozsahu hodnot. Skládá se ze dvou tlačítek označených mínusem a znaménkem plus. Tato tlačítka může uživatel manipulovat a postupně vybrat double hodnotu z rozsahu hodnot.

Definuje Stepper čtyři vlastnosti typu double:

  • Increment je hodnota, o kterou chcete změnit vybranou hodnotu o výchozí hodnotu 1.
  • Minimum je minimum rozsahu s výchozí hodnotou 0.
  • Maximum je maximální rozsah s výchozí hodnotou 100.
  • Value je hodnota krokovače, která může být v rozsahu mezi Minimum a Maximum a má výchozí hodnotu 0.

Všechny tyto vlastnosti jsou podporovány BindableProperty objekty. Vlastnost Value má výchozí režim vazby BindingMode.TwoWay, což znamená, že je vhodný jako zdroj vazby v aplikaci, která používá model-View-ViewModel (MVVM).

Value Převede Stepper vlastnost tak, aby byla mezi Minimum a Maximum, včetně. Minimum Pokud je vlastnost nastavena na hodnotu větší než Value vlastnost, Stepper nastaví Value vlastnost na Minimum. Podobně pokud Maximum je nastavena na hodnotu menší než Value, pak Stepper nastaví Value vlastnost na Maximum. Interně zajišťuje Stepper , že je Minimum menší než Maximum. Pokud Minimum nebo Maximum jsou někdy nastaveny tak, aby Minimum to nebylo menší než Maximum, je vyvolána výjimka. Další informace o nastavení a vlastnostech Minimum naleznete v tématu Preventivní opatření.Maximum

StepperValueChanged definuje událost, která se vyvolá při Value změnách, a to buď prostřednictvím manipulace Stepper s uživatelem nebo když aplikace nastaví Value vlastnost přímo. Událost ValueChanged je vyvolána také v případě, že Value je vlastnost coerced, jak bylo popsáno dříve. Objekt ValueChangedEventArgs , který doprovází ValueChanged událost má OldValue a NewValue, typu double. V době vyvolání události je hodnota NewValue stejná jako Value vlastnost objektu Stepper .

Vytvoření krokovače

Následující příklad ukazuje, jak vytvořit , Stepperse dvěma Label objekty:

<ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             x:Class="StepperDemo.BasicStepperXAMLPage"
             Title="Basic Stepper XAML">
    <StackLayout Margin="20">
        <Label x:Name="_rotatingLabel"
               Text="ROTATING TEXT"
               FontSize="18"
               HorizontalOptions="Center"
               VerticalOptions="Center" />
        <Stepper Maximum="360"
                 Increment="30"
                 HorizontalOptions="Center"
                 ValueChanged="OnStepperValueChanged" />
        <Label x:Name="_displayLabel"
               Text="(uninitialized)"
               HorizontalOptions="Center"
               VerticalOptions="Center" />        
    </StackLayout>
</ContentPage>

V tomto příkladu Stepper se inicializuje Maximum na vlastnost 360 a Increment vlastnost 30. Manipulace se Stepper změnami vybrané hodnoty přírůstkově mezi Minimum na Maximum základě hodnoty Increment vlastnosti. Label Druhá zobrazí text (neinicializovaný), dokud Stepper nebude manipulován, což způsobí vyvolání první ValueChanged události.

Soubor kódu obsahuje obslužnou rutinu ValueChanged události:

public partial class BasicStepperXAMLPage : ContentPage
{
    public BasicStepperXAMLPage()
    {
        InitializeComponent();
    }

    void OnStepperValueChanged(object sender, ValueChangedEventArgs e)
    {
        double value = e.NewValue;
        _rotatingLabel.Rotation = value;
        _displayLabel.Text = string.Format("The Stepper value is {0}", value);
    }
}

Obslužná rutina používá vlastnost objektu k nastavení Rotation vlastnosti první Label a používá string.Format metodu s NewValue vlastností argumentů události k nastavení Text vlastnosti druhé Label:stepper Value Stepper ValueChanged

.NET MAUI Stepper screenshot.

Je také možné, aby obslužná rutina události získala Stepper událost, která událost spouští prostřednictvím argumentu sender . Vlastnost Value obsahuje aktuální hodnotu:

double value = ((Stepper)sender).Value;

Stepper Pokud objektu byl zadán název v souboru XAML s atributem x:Name (například "stepper"), obslužná rutina události může odkazovat na tento objekt přímo:

double value = stepper.Value;

Ekvivalentní kód jazyka Stepper C# pro vytvoření je:

Stepper stepper = new Stepper
{
    Maximum = 360,
    Increment = 30,
    HorizontalOptions = LayoutOptions.Center
};
stepper.ValueChanged += (sender, e) =>
{
    rotationLabel.Rotation = stepper.Value;
    displayLabel.Text = string.Format("The Stepper value is {0}", e.NewValue);
};

Vytvoření vazby dat v kroku

Obslužnou rutinu ValueChanged události lze odstranit pomocí datové vazby k reakci na Stepper změnu hodnoty:

<ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             x:Class="StepperDemo.BasicStepperBindingsPage"
             Title="Basic Stepper Bindings">
    <StackLayout Margin="20">
        <Label Text="ROTATING TEXT"
               Rotation="{Binding Source={x:Reference _stepper}, Path=Value}"
               FontSize="18"
               HorizontalOptions="Center"
               VerticalOptions="Center" />
        <Stepper x:Name="_stepper"
                 Maximum="360"
                 Increment="30"
                 HorizontalOptions="Center" />
        <Label Text="{Binding Source={x:Reference _stepper}, Path=Value, StringFormat='The Stepper value is {0:F0}'}"
               HorizontalOptions="Center"
               VerticalOptions="Center" />
    </StackLayout>
</ContentPage>

V tomto příkladu Rotation je vlastnost první Label vázána na Value vlastnost Stepper, stejně jako vlastnost Text druhé Label se StringFormat specifikací. Po prvním zobrazení stránky se ve druhém Label zobrazí textový řetězec s hodnotou. Chcete-li zobrazit text bez datové vazby, musíte konkrétně inicializovat Text vlastnost Label události nebo simulovat spuštění ValueChanged události voláním obslužné rutiny události z konstruktoru třídy.

Opatření

Hodnota Minimum vlastnosti musí být vždy menší než hodnota Maximum vlastnosti. Následující příklad kódu způsobí Stepper vyvolání výjimky:

// Throws an exception!
Stepper stepper = new Stepper
{
    Minimum = 180,
    Maximum = 360
};

Kompilátor jazyka C# vygeneruje kód, který nastaví tyto dvě vlastnosti v posloupnosti a když Minimum je vlastnost nastavena na 180, je větší než výchozí Maximum hodnota 100. V tomto případě se můžete vyhnout výjimce tím, že Maximum nejprve nastavíte vlastnost:

Stepper stepper = new Stepper
{
    Maximum = 360,
    Minimum = 180
};

V tomto příkladu není nastavení Maximum 360 problém, protože je větší než výchozí Minimum hodnota 0. Pokud Minimum je tato hodnota nastavená, je menší než Maximum hodnota 360.

Stejný problém existuje v XAML. Nastavte vlastnosti v pořadí, které zajišťuje, že Maximum je vždy větší než Minimum:

<Stepper Maximum="360"
         Minimum="180" ... />

Hodnoty a Maximum hodnoty můžete nastavit Minimum na záporná čísla, ale pouze v pořadí, ve kterém Minimum je vždy menší než Maximum:

<Stepper Minimum="-360"
         Maximum="-180" ... />

Vlastnost Value je vždy větší nebo rovna hodnotě Minimum a menší než nebo rovno Maximum. Pokud Value je nastavená hodnota mimo tuto oblast, bude hodnota vymýšlena tak, aby leží v rozsahu, ale nevyvolá se žádná výjimka. Tento kód například nevyvolá výjimku:

Stepper stepper = new Stepper
{
    Value = 180
};

Value Místo toho se vlastnost převede na Maximum hodnotu 100.

Předchozí příklad nastavený Maximum na 360 a Minimum 180:

Stepper stepper = new Stepper
{
    Maximum = 360,
    Minimum = 180
};

Pokud Minimum je nastavená hodnota 180, je nastavena Value také na hodnotu 180.

Pokud byla obslužná ValueChanged rutina události připojena v době, kdy Value je vlastnost vyměněna k něčemu jinému, než je jeho výchozí hodnota 0, je ValueChanged vyvolána událost:

<Stepper ValueChanged="OnStepperValueChanged"
         Maximum="360"
         Minimum="180" />

Pokud Minimum je nastavena na hodnotu 180, Value je nastavena také na 180 a ValueChanged událost je vyvolána. K tomu může dojít před vytvořením zbytku stránky a obslužná rutina se může pokusit odkazovat na další prvky na stránce, které ještě nebyly vytvořeny. Do obslužné rutiny můžete přidat nějaký kód ValueChanged , který kontroluje null hodnoty jiných prvků na stránce. Nebo můžete obslužnou rutinu ValueChanged události nastavit po Stepper inicializaci hodnot.