我正在尝试创建一个只捕捉整数(0-100(的Slider。我看不到任何像";间隔";或";勾选";我是盲人吗?
您可以在Slider
.NETMAUI控件中通过处理其背后代码中的数据来实现这一点。
首先需要添加的是一个带有ValueChanged
事件处理程序的Slider
对象。
使用XAML执行此操作:
<Slider
Minimum="0"
Maximum="100"
ValueChanged="Slider_ValueChanged" />
对C#执行相同操作:
Slider slider = new()
{
Maximum = 100, // It is important to set the maximum value first.
Minimum = 0
};
现在,您需要在触发ValueChanged
事件时运行的方法。这就是我们的逻辑所在。
// The value we want the slider to increment each time it updates
readonly double sliderIncrement = 5;
// The value for the slider we will be using.
double sliderCorrectValue;
// The actual method. If the Slider object was instantiated in C#, read below.
private void Slider_ValueChanged(object sender, ValueChangedEventArgs e)
{
// Recognize the sender as a Slider object.
Slider slider = (Slider)sender;
// Get the slider value relative to the minimum,
// needed to calculate valid values with increment.
double relativeValue = slider.Value - slider.Minimum;
// Check if the value is valid, based on our increment.
if(relativeValue % sliderIncrement == 0)
{
// Value is valid
sliderCorrectValue = slider.Value;
// Update label text (optional)
valueDisplayer.Text = sliderCorrectValue.ToString();
}
}
这实质上创建了一个sliderCorrectValue
double
,如果Slider
的值有效,它将存储该值。请注意,您需要使用sliderCorrectValue
作为结果值,因为Slider
的内置Value
Property
仍然可能是不需要的值。
如果您在C#中创建了Slider,请使用它来处理ValueChanged
事件。
slider.ValueChanged += (sender, e) =>
{
// The same code as above
};
但是,我个人建议在为.NET MAUI应用程序构建用户界面时始终使用XAML而不是C#。