Kaydırıcı
.NET Çok Platformlu Uygulama Kullanıcı Arabirimi (.NET MAUI), Slider sürekli aralıktan bir double
değer seçmek için değiştirebileceğiniz yatay bir çubukdur.
Slider aşağıdaki özellikleri tanımlar:
Minimum
, varsayılandouble
değeri 0 olan aralığın en küçük değeridir.Maximum
, türündekidouble
aralığın en büyük değeridir ve varsayılan değeri 1'dir.Value
, vedouble
arasındaMinimum
Maximum
aralık oluşturabilen ve varsayılan değeri 0 olan kaydırıcının değeridir.MinimumTrackColor
, türünde Color, başparmak sol tarafındaki çubuk rengidir.MaximumTrackColor
, türünde Color, başparmak sağ tarafındaki çubuk rengidir.ThumbColor
türünde Color, başparmak rengidir.ThumbImageSource
, türünde ImageSource, başparmak için kullanılacak görüntüdür ve türündedir ImageSource.DragStartedCommand
, türündedir ICommandve sürükleme eyleminin başında yürütülür.DragCompletedCommand
, türündedir ICommandve sürükleme eyleminin sonunda yürütülür.
Bu özellikler nesneler tarafından BindableProperty desteklenir. özelliği varsayılan Value
bağlama moduna BindingMode.TwoWay
sahiptir. Bu, Model-View-ViewModel (MVVM) desenini kullanan bir uygulamada bağlama kaynağı olarak uygun olduğu anlamına gelir.
Dekont
ThumbColor
ve ThumbImageSource
özellikleri birbirini dışlar. Her iki özellik de ayarlanırsa, ThumbImageSource
özellik öncelikli olur.
Value
özelliği Slider ile arasında Minimum
Maximum
olacak şekilde zorlamalı olarak gerçekleştirir. Minimum
özelliği özelliğinden Value
büyük bir değere ayarlanırsa, Slider özelliği olarak Minimum
ayarlanırValue
. Benzer şekilde, değerinden Slider Value
küçük bir değere ayarlanırsa Maximum
özelliğini olarak Maximum
ayarlarValue
. dahili olarak, değerinden Slider küçük Maximum
olmasını Minimum
sağlar. veya Maximum
değeri değerinden Minimum
küçük Maximum
olmayacak şekilde ayarlanırsa Minimum
bir özel durum oluşturulur. ve özelliklerini ayarlama Minimum
hakkında daha fazla bilgi için bkz. Önlemler.Maximum
Slider, kullanıcı tarafından Slider veya program özelliği doğrudan ayarlarken Value
değişiklik yapıldığında Value
tetiklenen bir ValueChanged
olayı tanımlar. ValueChanged
Özelliği önceki paragrafta Value
açıklandığı gibi zorunlu olduğunda da bir olay tetiklenir. Olaya ValueChangedEventArgs
eşlik ValueChanged
eden nesnenin türünde double
ve NewValue
özellikleri vardırOldValue
. Olay tetiklendiğinde değeri NewValue
nesnesinin Value
özelliğiyle Slider aynıdır.
Sliderayrıca, sürükleme eyleminin başında ve sonunda tetiklenen ve DragCompleted
olaylarını tanımlarDragStarted
. olayından ValueChanged
DragStarted
farklı olarak ve DragCompleted
olayları yalnızca kullanıcı tarafından gerçekleştirilen işleme Slideryoluyla oluşturulur. DragStarted
Olay tetiklendiğinde türündeki DragStartedCommand
ICommand, yürütülür. Benzer şekilde, olay tetiklendiğinde DragCompleted
türündeki DragCompletedCommand
ICommand, yürütülür.
Uyarı
, Start
veya End
ile Slidersınırlandırılmamış yatay düzen seçeneklerini Center
kullanmayın. varsayılan HorizontalOptions
ayarını Fill
koruyun ve bir düzen eklerken Grid Slider öğesinin Auto
genişliğini kullanmayın.
Kaydırıcı Oluşturma
Aşağıdaki örnekte, iki Label nesne içeren bir Slideröğesinin nasıl oluşturulacağı gösterilmektedir:
<ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="SliderDemos.BasicSliderXamlPage"
Title="Basic Slider XAML"
Padding="10, 0">
<StackLayout>
<Label x:Name="rotatingLabel"
Text="ROTATING TEXT"
FontSize="18"
HorizontalOptions="Center"
VerticalOptions="Center" />
<Slider Maximum="360"
ValueChanged="OnSliderValueChanged" />
<Label x:Name="displayLabel"
Text="(uninitialized)"
HorizontalOptions="Center"
VerticalOptions="Center" />
</StackLayout>
</ContentPage>
Bu örnekte, Slider özelliği 360 olacak şekilde Maximum
başlatılır. İkinciLabel, "(başlatılmamış)" metnini, ilk olayın tetiklenmelerine neden ValueChanged
olacak şekilde işlenene kadar Slider görüntüler.
Arka planda kod dosyası olayın işleyicisini ValueChanged
içerir:
public partial class BasicSliderXamlPage : ContentPage
{
public BasicSliderXamlPage()
{
InitializeComponent();
}
void OnSliderValueChanged(object sender, ValueChangedEventArgs args)
{
double value = args.NewValue;
rotatingLabel.Rotation = value;
displayLabel.Text = String.Format("The Slider value is {0}", value);
}
}
işleyicisiSlider, birincinin Label özelliğini ayarlamak Rotation
için nesnesinin slider
özelliğini kullanır Value
ve ikinci Labelöğesinin özelliğini ayarlamak Text
için olay bağımsız değişkenlerinin özelliğiyle NewValue
yöntemini kullanırString.Format
:ValueChanged
Olay işleyicisinin bağımsız değişken aracılığıyla sender
olayı tetikleyen öğesini alması Slider da mümkündür. Value
özelliği geçerli değeri içerir:
double value = ((Slider)sender).Value;
Nesneye Slider XAML dosyasında özniteliği olan bir x:Name
ad (örneğin, "kaydırıcı") verilmişse olay işleyicisi bu nesneye doğrudan başvurabilir:
double value = slider.Value;
oluşturmak Slider için eşdeğer C# kodu şu şekildedir:
Slider slider = new Slider
{
Maximum = 360
};
slider.ValueChanged += (sender, args) =>
{
rotationLabel.Rotation = slider.Value;
displayLabel.Text = String.Format("The Slider value is {0}", args.NewValue);
};
Veri bağlama kaydırıcısı
Olay işleyicisi ValueChanged
, değişen değere yanıt vermek Slider için veri bağlama kullanılarak ortadan kaldırılabilir:
<ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="SliderDemos.BasicSliderBindingsPage"
Title="Basic Slider Bindings"
Padding="10, 0">
<StackLayout>
<Label Text="ROTATING TEXT"
Rotation="{Binding x:DataType='Slider',
Source={x:Reference slider},
Path=Value}"
FontSize="18"
HorizontalOptions="Center"
VerticalOptions="Center" />
<Slider x:Name="slider"
Maximum="360" />
<Label x:Name="displayLabel"
Text="{Binding x:DataType='Slider',
Source={x:Reference slider},
Path=Value,
StringFormat='The Slider value is {0:F0}'}"
HorizontalOptions="Center"
VerticalOptions="Center" />
</StackLayout>
</ContentPage>
Bu örnekte, birincinin Label özelliği, belirtim içeren ikincinin StringFormat
Label özelliği Slidergibi Text
öğesinin özelliğine bağlıdırValue
.Rotation
Sayfa ilk kez göründüğünde, ikinci Label değerle birlikte metin dizesini görüntüler. Veri bağlama olmadan metin görüntülemek için, özellikle öğesinin Text
Label özelliğini başlatmanız veya sınıf oluşturucusundan olay işleyicisini çağırarak olayın tetiklendiğini ValueChanged
simüle etmeniz gerekir.
Önlem
özelliğinin Minimum
değeri her zaman özelliğin değerinden Maximum
küçük olmalıdır. Aşağıdaki örnek, bir özel durum oluşturmasına Slider neden olur:
// Throws an exception!
Slider slider = new Slider
{
Minimum = 10,
Maximum = 20
};
C# derleyicisi, bu iki özelliği sırayla ayarlayan bir kod oluşturur ve Minimum
özellik 10 olarak ayarlandığında varsayılan Maximum
değer olan 1'den büyüktür. Önce özelliğini ayarlayarak bu durumda özel durumdan Maximum
kaçınabilirsiniz:
Slider slider = new Slider
{
Maximum = 20,
Minimum = 10
};
Bu örnekte, varsayılan Minimum
değer olan 0'dan büyük olduğundan 20 olarak ayarlanması Maximum
sorun oluşturmaz. Minimum
Ayarlandığında, değer 20 değerinden Maximum
küçüktür.
Aynı sorun XAML'de de var. Özelliklerin her zaman değerinden Minimum
büyük olmasını sağlayacak Maximum
şekilde ayarlanması gerekir:
<Slider Maximum="20"
Minimum="10" ... />
ve Maximum
değerlerini negatif sayılara ayarlayabilirsinizMinimum
, ancak yalnızca her zaman değerinden Maximum
küçük olan Minimum
bir sırada ayarlayabilirsiniz:
<Slider Minimum="-20"
Maximum="-10" ... />
Value
özelliği her zaman değerinden büyük veya buna eşit ve değerinden Minimum
küçük veya eşittirMaximum
. Bu aralığın dışındaki bir değere ayarlanırsa Value
, değer aralığın içinde kalacak şekilde zorlamalı olur, ancak özel durum tetiklenmez. Örneğin, aşağıdaki örnek bir özel durum oluşturmaz:
Slider slider = new Slider
{
Value = 10
};
Bunun yerine, Value
özelliği 1 değerine zorlamalı Maximum
.
Önceki bir örnek 20 ve Minimum
10 olarak ayarlanmışMaximum
:
Slider slider = new Slider
{
Maximum = 20,
Minimum = 10
};
Minimum
10 olarak ayarlandığında, Value
10 olarak da ayarlanır.
Özelliğin varsayılan değeri 0 dışında bir şeye zorlandığı sırada Value
bir ValueChanged
olay işleyicisi eklenmişse, bir ValueChanged
olay tetiklenir:
<Slider ValueChanged="OnSliderValueChanged"
Maximum="20"
Minimum="10" />
Minimum
10 olarak ayarlandığında da Value
10 olarak ayarlanır ve ValueChanged
olay oluşturulur. Bu durum, sayfanın geri kalanı oluşturulmadan önce oluşabilir ve işleyici, sayfada henüz oluşturulmamış diğer öğelere başvurmaya çalışabilir. İşleyiciye ValueChanged
sayfadaki diğer öğelerin değerlerini denetleen null
bazı kodlar eklemek isteyebilirsiniz. Veya değerler başlatıldıktan sonra olay işleyicisini Slider ayarlayabilirsinizValueChanged
.