麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > .NET > 正文

WPF實現(xiàn)slide控件拖動完成后改變變量值

2024-07-10 13:32:11
字體:
供稿:網(wǎng)友

WPF中使slide控件拖動完成后改變變量值這個問題一開始覺得還是挺簡單的,網(wǎng)上也看到不少解決方案。

首先一個最簡單最直接的方案就是自定義一個名為FinalValue的依賴屬性。隨后重載OnThumbDragCompleted函數(shù),在Thumb控件完成拖動時改寫FinalValue。代碼如下

  public class SliderIgnoreDelta : Slider  {    public int FinalValue    {      get { return (int)GetValue(FinalValueProperty); }      set { SetValue(FinalValueProperty, value); }    }    public static readonly DependencyProperty FinalValueProperty =      DependencyProperty.Register(        "FinalValue", typeof(int), typeof(SliderIgnoreDelta),        new FrameworkPropertyMetadata(0,          FrameworkPropertyMetadataOptions.BindsTwoWayByDefault, OnFinalValueChanged));    private static void OnFinalValueChanged(DependencyObject sender, DependencyPropertyChangedEventArgs e)    {      int result;      if (int.TryParse(e.NewValue.ToString(), out result))      {        if (((SliderIgnoreDelta) sender).Value != result)        {          ((SliderIgnoreDelta) sender).Value = result;        }      }    }    protected override void OnThumbDragCompleted(System.Windows.Controls.Primitives.DragCompletedEventArgs e)    {      base.OnThumbDragCompleted(e);      FinalValue = (int)Value;    }  }

試著跑一下,似乎搞定了。等一下,左右鍵怎么不起作用了。看來還有問題。

跟了一下,發(fā)覺只需要重寫OnValue這個函數(shù)就可以實現(xiàn)左右鍵的功能,但光改寫這一步還不行,如果在OnValue中不停的更改FinalValue的值那和原本的Slide還有什么區(qū)別呢?所以還要同步修改OnThumbStart,設(shè)一個標(biāo)志位。

最終代碼如下

  public class SliderIgnoreDelta : Slider  {    public int FinalValue    {      get { return (int)GetValue(FinalValueProperty); }      set { SetValue(FinalValueProperty, value); }    }    public static readonly DependencyProperty FinalValueProperty =      DependencyProperty.Register(        "FinalValue", typeof(int), typeof(SliderIgnoreDelta),        new FrameworkPropertyMetadata(0,          FrameworkPropertyMetadataOptions.BindsTwoWayByDefault, OnFinalValueChanged));    private static void OnFinalValueChanged(DependencyObject sender, DependencyPropertyChangedEventArgs e)    {      int result;      if (int.TryParse(e.NewValue.ToString(), out result))      {        if (((SliderIgnoreDelta) sender).Value != result)        {          ((SliderIgnoreDelta) sender).Value = result;        }      }    }    public bool IsDragging { get; protected set; }    protected override void OnThumbDragCompleted(System.Windows.Controls.Primitives.DragCompletedEventArgs e)    {      IsDragging = false;      base.OnThumbDragCompleted(e);      OnValueChanged(Value, Value);    }    protected override void OnThumbDragStarted(System.Windows.Controls.Primitives.DragStartedEventArgs e)    {      IsDragging = true;      base.OnThumbDragStarted(e);    }    protected override void OnValueChanged(double oldValue, double newValue)    {      if (!IsDragging)      {        base.OnValueChanged(oldValue, newValue);        if (FinalValue != (int)Math.Round(Value, 0))        {          FinalValue = (int)Math.Round(Value, 0);        }      }    }  }

最后還有一點(diǎn)要注意,F(xiàn)inalValue需要反寫回Value中,Thumb的位置本質(zhì)上還是反映Value的值。

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持VeVb武林網(wǎng)。


注:相關(guān)教程知識閱讀請移步到ASP.NET教程頻道。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 在线天堂中文字幕 | 国产乱色精品成人免费视频 | 久久美女免费视频 | 性欧美一区 | 污片视频网站 | 免费久久精品 | 成人黄色短视频在线观看 | 男人的天堂视频网站 | chinesehd天美原创xxxx | 宅男噜噜噜66国产在线观看 | 久久精品视频亚洲 | 国产日韩亚洲 | 亚洲国产精品高潮呻吟久久 | 久久久久久久久久性 | 欧美一区二区精品夜夜嗨 | 香蕉久草在线 | 香蕉久久久 | 国产成人自拍av | 欧美一区成人 | 国产精品自在线拍 | 国产中文av在线 | 一区二区三区日韩电影 | 九九色网站 | 国产精品jk白丝蜜臀av软件 | 精品国产91久久久久久久妲己 | 国产精品性夜天天视频 | 国产精品自拍99 | av不卡免费在线观看 | 热@国产 | 香蕉国产在线视频 | 日日狠狠久久 | 手机黄色小视频 | 国产精品视频一区二区三区四区国 | 精品一区二区三区免费视频 | 婷婷一区二区三区四区 | 国产亚洲精品久久久久久久久久 | 99国产精品自拍 | 牛牛a级毛片在线播放 | 日本在线播放一区二区三区 | 亚洲精品午夜国产va久久成人 | 日本黄色一级视频 |