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 meziMinimum
aMaximum
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
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.