![](/img/trans.png)
[英]There is a way to group sliders in Xamarin.Forms to change value toghether?
[英]Multiple stepped sliders in Xamarin.Forms
我有一个关于多个阶梯状滑块的问题。 我正在尝试创建多个阶梯状滑块,但是问题是我不知道如何确定更改了哪个滑块值
这是我的构造函数:
public FeedbackPage ()
{
InitializeComponent ();
Feedback = new Feedback();
StepValue = 1.0;
SliderValueVak.ValueChanged += OnSliderValueChanged;
SliderValueUitleg.ValueChanged += OnSliderValueChanged;
this.BindingContext = this;
}
如您所见,滑块的值是否更改,它调用OnSliderValueChanged方法。 下面显示了此方法中的代码:
void OnSliderValueChanged(object sender, ValueChangedEventArgs e)
{
var newStep = Math.Round(e.NewValue / StepValue);
SliderValueVak.Value = newStep * StepValue;
SliderValueUitleg.Value = newStep * StepValue;
}
但是现在,如果我使用一个滑块,则两个滑块的值都会改变,这是因为我给它们都赋予了相同的值。 有没有一种方法可以使用if语句或夹心大小写来查看更改了哪个滑块值?
sender
是触发事件的控件。 只需将其转换为正确的类型,然后您就会知道哪个滑块是源
void OnSliderValueChanged(object sender, ValueChangedEventArgs e)
{
var newStep = Math.Round(e.NewValue / StepValue);
var slider = (Slider)sender;
slider.Value = newStep * StepValue;
}
就像jason所说的,sender是触发事件的控件,但是如果您想做更多的事情,则可以定义Slider
的子类。
class MySlider:Slider
{
public readonly int tag;
public MySlider()
{
}
public MySlider(int tag)
{
this.tag = tag;
}
}
您可以设置标签以区分多个阶梯状滑块。
SliderValueVak = new MySlider(10);
SliderValueUitleg = new MySlider(20);
然后在方法OnSliderValueChanged
void OnSliderValueChanged(object sender, ValueChangedEventArgs e)
{
var newStep = Math.Round(e.NewValue / StepValue);
MySlider slider = (MySlider)sender;
if(slider.tag==10)// source is SliderValueVak
{
SliderValueVak.Value = newStep * StepValue;
// do some thing more
}
else if(slider.tag == 20) //source is SliderValueUitleg
{
SliderValueUitleg.Value = newStep * StepValue;
// do some thing more
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.