Gestore di istruzioni
L'interfaccia utente dell'app multipiattaforma .NET (.NET MAUI) Stepper consente di selezionare un valore numerico da un intervallo di valori. È costituito da due pulsanti etichettati con segni meno e più. Questi pulsanti possono essere modificati dall'utente per selezionare in modo incrementale un double
valore da un intervallo di valori.
Stepper Definisce quattro proprietà di tipo double
:
Increment
è l'importo per cui modificare il valore selezionato, con un valore predefinito pari a 1.Minimum
è il valore minimo dell'intervallo, con un valore predefinito pari a 0.Maximum
è il valore massimo dell'intervallo, con un valore predefinito pari a 100.Value
è il valore del stepper, che può variare traMinimum
eMaximum
e ha un valore predefinito pari a 0.
Tutte queste proprietà sono supportate da BindableProperty oggetti . La Value
proprietà ha una modalità di associazione predefinita di BindingMode.TwoWay
, il che significa che è adatto come origine di associazione in un'applicazione che usa il modello Model-View-ViewModel (MVVM).
La Stepper proprietà viene impostata Value
in modo che sia compresa tra Minimum
e Maximum
, inclusiva. Se la Minimum
proprietà è impostata su un valore maggiore della Value
proprietà , la StepperValue
proprietà viene impostata su Minimum
. Analogamente, se Maximum
è impostato su un valore minore di Value
, Stepper la Value
proprietà viene impostata su Maximum
. Internamente, garantisce Stepper che Minimum
sia minore di Maximum
. Se Minimum
o Maximum
sono mai impostati in modo che Minimum
non sia minore di Maximum
, viene generata un'eccezione. Per altre informazioni sull'impostazione delle Minimum
proprietà e Maximum
, vedere Precauzioni.
Stepper definisce un ValueChanged
evento generato quando le Value
modifiche vengono apportate tramite la modifica dell'oggetto Stepper o quando l'applicazione imposta direttamente la Value
proprietà. Un ValueChanged
evento viene generato anche quando la Value
proprietà viene forzata come descritto in precedenza. L'oggetto ValueChangedEventArgs
che accompagna l'evento ValueChanged
ha OldValue
e NewValue
, di tipo double
. Al momento della generazione dell'evento, il valore di NewValue
è uguale alla Value
proprietà dell'oggetto Stepper .
Creare un stepper
Nell'esempio seguente viene illustrato come creare un Stepperoggetto con due Label oggetti :
<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>
In questo esempio, viene Stepper inizializzato per avere una Maximum
proprietà 360 e una Increment
proprietà pari a 30. La modifica del Stepper valore selezionato viene modificata in modo incrementale tra Minimum
a Maximum
in base al valore della Increment
proprietà . Il secondo Label visualizza il testo "(non inizializzato)" fino a quando l'oggetto Stepper non viene modificato, causando la generazione del primo ValueChanged
evento.
Il file code-behind contiene il gestore per l'evento ValueChanged
:
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);
}
}
Il ValueChanged
gestore dell'oggetto Stepper utilizza la Value
proprietà dell'oggetto stepper
per impostare la Rotation
proprietà del primo Label e utilizza il string.Format
metodo con la NewValue
proprietà degli argomenti dell'evento per impostare la Text
proprietà del secondo Labeloggetto :
È anche possibile che il gestore eventi ottenga l'oggetto Stepper che genera l'evento tramite l'argomento sender
. La Value
proprietà contiene il valore corrente:
double value = ((Stepper)sender).Value;
Se all'oggetto Stepper è stato assegnato un nome nel file XAML con un x:Name
attributo (ad esempio, "stepper"), il gestore eventi potrebbe fare riferimento direttamente a tale oggetto:
double value = stepper.Value;
Il codice C# equivalente per la creazione di un Stepper è:
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);
};
Associare dati a Stepper
Il ValueChanged
gestore eventi può essere eliminato usando il data binding per rispondere alla modifica del Stepper valore:
<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>
In questo esempio, la Rotation
proprietà del primo Label è associata alla Value
proprietà di Stepper, come è la Text
proprietà del secondo Label con una StringFormat
specifica. Quando viene visualizzata la prima pagina, la seconda Label visualizza la stringa di testo con il valore . Per visualizzare testo senza data binding, è necessario inizializzare in modo specifico la Text
proprietà dell'oggetto Label o simulare una generazione dell'evento ValueChanged
chiamando il gestore eventi dal costruttore della classe.
Precauzioni
Il valore della Minimum
proprietà deve essere sempre minore del valore della Maximum
proprietà. Nell'esempio di codice seguente l'oggetto genera un'eccezione Stepper :
// Throws an exception!
Stepper stepper = new Stepper
{
Minimum = 180,
Maximum = 360
};
Il compilatore C# genera codice che imposta queste due proprietà in sequenza e quando la Minimum
proprietà è impostata su 180, è maggiore del valore predefinito Maximum
100. È possibile evitare l'eccezione in questo caso impostando prima la Maximum
proprietà :
Stepper stepper = new Stepper
{
Maximum = 360,
Minimum = 180
};
In questo esempio, l'impostazione Maximum
su 360 non è un problema perché è maggiore del valore predefinito Minimum
0. Quando Minimum
è impostato, il valore è minore del Maximum
valore di 360.
Lo stesso problema esiste in XAML. Impostare le proprietà in un ordine che garantisce che Maximum
sia sempre maggiore di Minimum
:
<Stepper Maximum="360"
Minimum="180" ... />
È possibile impostare i Minimum
valori e Maximum
su numeri negativi, ma solo in un ordine in cui Minimum
è sempre minore di Maximum
:
<Stepper Minimum="-360"
Maximum="-180" ... />
La Value
proprietà è sempre maggiore o uguale al Minimum
valore e minore o uguale a Maximum
. Se Value
è impostato su un valore esterno a tale intervallo, il valore verrà costretto a trovarsi all'interno dell'intervallo, ma non viene generata alcuna eccezione. Ad esempio, questo codice non genererà un'eccezione:
Stepper stepper = new Stepper
{
Value = 180
};
Al contrario, la Value
proprietà viene forzata al Maximum
valore di 100.
Un esempio precedente impostato su Maximum
360 e Minimum
su 180:
Stepper stepper = new Stepper
{
Maximum = 360,
Minimum = 180
};
Quando Minimum
è impostato su 180, Value
viene impostato anche su 180.
Se un ValueChanged
gestore eventi è stato associato al momento in cui la Value
proprietà è associata a un valore diverso dal valore predefinito 0, viene generato un ValueChanged
evento:
<Stepper ValueChanged="OnStepperValueChanged"
Maximum="360"
Minimum="180" />
Quando Minimum
è impostato su 180, Value
viene impostato anche su 180 e viene generato l'evento ValueChanged
. Questo problema può verificarsi prima che il resto della pagina sia stato costruito e il gestore potrebbe tentare di fare riferimento ad altri elementi nella pagina che non sono ancora stati creati. Potrebbe essere necessario aggiungere codice al ValueChanged
gestore che verifica la presenza null
di valori di altri elementi nella pagina. In alternativa, è possibile impostare il gestore eventi dopo l'inizializzazione ValueChanged
dei Stepper valori.
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: Nel corso del 2024 verranno gradualmente disattivati i problemi di GitHub come meccanismo di feedback per il contenuto e ciò verrà sostituito con un nuovo sistema di feedback. Per altre informazioni, vedereInvia e visualizza il feedback per