有没有办法在 .NET MAUI 中的滑块上设置"Interval"或"Tick"



我正在尝试创建一个只捕捉整数(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();
}
}

这实质上创建了一个sliderCorrectValuedouble,如果Slider的值有效,它将存储该值。请注意,您需要使用sliderCorrectValue作为结果值,因为Slider的内置ValueProperty仍然可能是不需要的值。

如果您在C#中创建了Slider,请使用它来处理ValueChanged事件。

slider.ValueChanged += (sender, e) =>
{
// The same code as above
};

但是,我个人建议在为.NET MAUI应用程序构建用户界面时始终使用XAML而不是C#。

最新更新