最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時間:2017年03月27日 09:09:22   作者:rigid  
這篇文章主要為大家詳細介紹了WPF實現(xiàn)slide控件拖動完成后改變變量值,具有一定的參考價值,感興趣的小伙伴們可以參考一下

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);
        }
      }
    }
  }

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

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

相關(guān)文章

  • 詳解ASP.NET MVC Form表單驗證

    詳解ASP.NET MVC Form表單驗證

    這篇文章主要為大家詳細介紹了ASP.NET MVC Form表單驗證,一般驗證方式有Windows驗證和表單驗證,web項目用得更多的是表單驗證,感興趣的小伙伴們可以參考一下
    2016-03-03
  • 在.NET中使用DiagnosticSource的方法

    在.NET中使用DiagnosticSource的方法

    這篇文章主要介紹了在.NET中使用DiagnosticSource的方法,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-10-10
  • VS2010 水晶報表的使用方法

    VS2010 水晶報表的使用方法

    這篇文章簡單介紹下VS2010 水晶報表的使用方法,需要的朋友可以參考下
    2013-06-06
  • 詳解在ASP.NET Core 中使用Cookie中間件

    詳解在ASP.NET Core 中使用Cookie中間件

    本篇文章主要介紹了詳解在ASP.NET Core 中使用Cookie中間件,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-05-05
  • 文本框中輸入小寫字母即時轉(zhuǎn)換為大寫實現(xiàn)思路

    文本框中輸入小寫字母即時轉(zhuǎn)換為大寫實現(xiàn)思路

    系統(tǒng)中有一個文本框,要求輸入大寫字母,只是用戶不是那么配合所以只好在程序來控制了,感興趣的朋友可以參考下哈
    2013-03-03
  • .NET實現(xiàn)異步編程async和await

    .NET實現(xiàn)異步編程async和await

    這篇文章介紹了.NET實現(xiàn)異步編程async和await的方法,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-03-03
  • 一步步教你讀懂NET中IL(圖文詳解)

    一步步教你讀懂NET中IL(圖文詳解)

    本文章以一個實際的例子,讓你了解堆疊式 VM 的運作原理,并對 .NET IL(Intermediate Language)有最基本的領(lǐng)略,需要的朋友可以參考下
    2013-07-07
  • Asp.Net中的字符串和HTML十進制編碼轉(zhuǎn)換實現(xiàn)代碼

    Asp.Net中的字符串和HTML十進制編碼轉(zhuǎn)換實現(xiàn)代碼

    這篇文章主要介紹了Asp.Net中的字符串和HTML十進制編碼轉(zhuǎn)換實現(xiàn)代碼,本文一并列出了javascript語言的實現(xiàn)方法,用以實現(xiàn)字符串和HTML十進制編碼之間互相轉(zhuǎn)換功能,需要的朋友可以參考下
    2014-08-08
  • sqlserver 批量數(shù)據(jù)替換助手V1.0版發(fā)布

    sqlserver 批量數(shù)據(jù)替換助手V1.0版發(fā)布

    前段時間網(wǎng)站被掛馬,數(shù)據(jù)庫表中很多文本字段都被加上了一段js腳本。修復(fù)完程序漏洞之后便開始著手清理這些被注入的數(shù)據(jù),其間參考了一些網(wǎng)上的方法,大都是寫一個存儲過程進行一個表一個表逐一清理。
    2011-10-10
  • asp.net 處理F5刷新頁面重復(fù)提交頁面的一個思路

    asp.net 處理F5刷新頁面重復(fù)提交頁面的一個思路

    當(dāng)提交完一個頁面后,如果我們再次點擊F5刷新該頁面的話,會彈出一個提示,提示我們?nèi)绻^續(xù),則會重新發(fā)送提交我們剛才提交的內(nèi)容,要是類似付款或一次性的操作,我們不應(yīng)該這樣操作,否則會造成重復(fù)提交的問題。
    2010-02-02

最新評論

锡林郭勒盟| 项城市| 马鞍山市| 霞浦县| 绥阳县| 喀喇沁旗| 清流县| 阳谷县| 永昌县| 安仁县| 桐庐县| 永年县| 子洲县| 神木县| 玉林市| 安庆市| 滁州市| 准格尔旗| 体育| 额敏县| 贺州市| 阿荣旗| 哈密市| 玉环县| 和林格尔县| 潜山县| 嵩明县| 大竹县| 麻城市| 武义县| 东莞市| 客服| 新安县| 酒泉市| 怀来县| 宾川县| 昌平区| 栖霞市| 南投市| 西乌珠穆沁旗| 凉城县|