我需要一个滑块事件,只有当用户结束触摸控件时它才会触发

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我需要一个滑块事件,只有当用户结束触摸控件时它才会触发相关的知识,希望对你有一定的参考价值。

我的需求:我需要一个滑块事件,它只有在用户结束触摸控件时才会触发

定制控制:

 public class ExtendedSlider : Slider
    {
        public event EventHandler StopedDraging;
        public void OnStopedDrag()
        {
            if (StopedDraging != null)
            {
                StopedDraging(this,EventArgs.Empty);
            }
        }
    }

用户界面:

      <ListView.ItemTemplate >
                  <Label Text="{Binding luminaireLevel, StringFormat='{0:F0}%'}" />
           <PCAControls:ExtendedSlider Maximum="100" Minimum="25" 
                                            Value="{Binding luminaireLevel, Mode=TwoWay}"
                                            LuminaireID="{Binding id}"
                                            StopedDraging="ExtendedSlider_StopedDraging"
                                            />                 
      </ListView.ItemTemplate>

渲染器:

class ExtendedSliderRenderer : SliderRenderer
{
    protected override void OnElementChanged(ElementChangedEventArgs<Slider> e)
    {
        base.OnElementChanged(e);

        if (Control != null)
        {
            var slider = (PCA.CustomControls.ExtendedSlider)e.NewElement;
            Control.Max = (int)(slider.Maximum - slider.Minimum);
            Control.Progress = (int)(slider.Value - slider.Minimum);
            Control.StopTrackingTouch += Control_StopTrackingTouch;
        }
    }

    void Control_StopTrackingTouch(object sender, SeekBar.StopTrackingTouchEventArgs e)
    {
        var slider = (PCA.CustomControls.ExtendedSlider)Element;
        slider.Value = Control.Progress + slider.Minimum; 
        slider.OnStopedDrag();
    }
} 

问题是:我实现了我的预期,但是用户停止拖动滑块或在滑块之间点击,luminaireLevel(vewmodel属性)正在更新,但滑块始终显示完整的进程

答案

当您的渲染器更改ios控件的值时,“绑定”不是两个=方式。要实现您想要的功能,您需要将Xamarin.Forms Slider绑定到viewmodel中的值,然后在渲染器中更改viewmodel中的值。

如果绑定所有属性(最小值,最大值,值,进度),则会更容易

以上是关于我需要一个滑块事件,只有当用户结束触摸控件时它才会触发的主要内容,如果未能解决你的问题,请参考以下文章

iPhone:如何检测滑块拖动的结束?

UISlider 事件

PyQt ProgressBar

NestedScrollview 内的 RecyclerView 滚动不顺畅

Onclick 在 div 之外隐藏 div [重复]

UIButton 上的 TouchDragOutside 直到触摸距离大约 5-10 像素时才会触发