2016-04-22 29 views
1

我需要創建一個慢速滑塊,因此如果用戶移動得太快,滑塊就會嘗試慢慢到達鼠標。就像低通濾波運動一樣。WPF:創建一個慢速移動滑塊

我需要這個,因爲滑塊會影響引擎中不應該改變得太快的功率。

我是新來的數據綁定,但我綁定兩種方式與我的財產,它的工作原理。所以我想繼續使用這個滑塊而不用重新編寫太多東西。

我試圖抓住ValueChanged,檢查舊值和新值之間的差異是否過大,但後來我無法編輯e.NewValue(它只是公開獲取,未設置) 我試圖設置滑塊。在ValueChanged中的值與我的新值,但它導致了stackoverflow(我想由於綁定,retrofeeds變化)

我也嘗試過與Thumb_DragDelta,但我再次看到值,但不能設置新(較小)三角洲。

任何線索?


編輯 我進入控制受影響的屬性(綁定的一個),其結果是增加真正得到減緩,但更新只發生,如果你的設置部分最大加大碼移動你的鼠標,如果你拖得太快,所以拇指停留,你停止移動鼠標,拇指不會跟着你。如果你點擊移動你的鼠標,拇指來到你的鼠標。

我想這是因爲該值更改。當DragDelta發生時才能調用,它只是發生的OnMouseMove ..

任何變通辦法?

回答

1

聲明:這是一種備用解決方案。

一個落後光標的滑塊對我來說似乎很奇怪。用戶體驗方面,它給人的印象是應用程序滯後,而這種增長正在逐漸發生。我個人會創建一個帶有禁用滑塊和兩個重複按鈕的用戶控件。這可能是這個樣子:

<Window x:Class="WpfApplication2.MainWindow" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    Title="MainWindow" Height="350" Width="525"> 
<StackPanel Orientation="Horizontal" Height="25"> 
    <RepeatButton Click="ButtonLess_Click" Content="less"/> 
    <Slider Width="200" IsEnabled="False" Name="Slider1" ></Slider> 
    <RepeatButton Click="ButtonMore_Click" Content="more"/> 
</StackPanel> 
</Window> 

後面的代碼:

private void ButtonLess_Click(object sender, RoutedEventArgs e) 
    { 
     Slider1.Value = Math.Max(Slider1.Minimum, Slider1.Value - Slider1.SmallChange); 
    } 

    private void ButtonMore_Click(object sender, RoutedEventArgs e) 
    { 
     Slider1.Value = Math.Min(Slider1.Maximum, Slider1.Value + Slider1.SmallChange); 
    } 

enter image description here

這樣你就不能滑動滑塊本身,但點擊/按住「少」或「多」逐漸增加或減少滑塊。

+0

這將確定工作,但不是我正在尋找。這個設計正是我所解釋的,你可以拖動任何你想要的東西,但它只會像引擎實際改變動力一樣快地移動。無論如何感謝代碼示例 – javirs