Многошаговые ползунки в Xamarin.Forms - PullRequest
0 голосов
/ 28 октября 2018

У меня вопрос о многоступенчатых ползунках.Я пытаюсь создать несколько ступенчатых ползунков, но проблема в том, что я не знаю, как определить, какое значение ползунка изменилось

Это мой конструктор:

 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 или swich, чтобы увидеть, какое значение слайдера изменилось?

Ответы [ 2 ]

0 голосов
/ 29 октября 2018

Как сказал Джейсон, отправитель - это элемент управления, который запустил событие. Но если вы хотите сделать что-то еще. Вы можете определить подкласс 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
    }

  }
0 голосов
/ 28 октября 2018

sender - это элемент управления, который вызвал событие.Просто приведите его к правильному типу, и тогда вы узнаете, какой ползунок был источником

void OnSliderValueChanged(object sender, ValueChangedEventArgs e)
    {
        var newStep = Math.Round(e.NewValue / StepValue);

        var slider = (Slider)sender;
        slider.Value = newStep * StepValue;
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...