2015-09-02 70 views
0

我有一個UWP XAML應用程序,它使用滑塊作爲網絡上音頻硬件的音量控制。我的問題是發送音量變化之間需要50ms +的延遲時間,所以如果我快速將滑塊從最小值移動到最大值,硬件需要幾秒鐘才能趕上,因爲應用正在發送新的+1級別的每個valuechanged事件滑塊。基於移動滑塊的速度的滑塊步進速率

我不想更改滑塊的步驟,因爲我也想要精確控制。小小的一步/大步並沒有真正的幫助。是否有內置功能會根據您移動滑塊的速度來改變步長,即慢速移動,step = 1,medium motion step = 5,快速移動step = 10?

如果沒有,有沒有人有任何建議如何可以實施?我想我可以用操縱事件做些事情。

回答

0

有一種方法可以根據拖動速度更改滑塊的步長。 您必須訂閱ManipulationDelta事件(不要忘記將滑塊的ManipulationMode設置爲System或None之外的其他值)。 然後在處理程序中獲取來自ManipulationDeltaRoutedEventArgs參數的Velocities。類似的東西

public void MySlider_ManipulationDelta(object sender, 
    ManipulationDeltaRoutedEventArgs e) 
{ 
    var velocities = e.Velocities 
    var slider = sender as Slider; 
    if(slider != null) 
    { 
     //Create a fomula based on the velocities to fit your needs. 
    } 

} 

您還應該記得重置ManipulationCompleted事件上滑塊的步驟。

話雖如此,我沒有看到如何根據拖動速度改變步驟將幫助您達到預期的結果。根據我的理解,由於您的控制之外的參數(網絡,硬件等),您的應用程序發送數據的時間與硬件反映更改的時間之間有50毫秒的延遲。就是這樣。

+0

我在想我需要做這樣的事情,希望有建立它的東西。我可以將音量設置爲任何我想要的數字。如果您現在快速將滑塊從1移動到100,則它具有發送100音量更改命令,因爲valuechanged會發射100次... 1,2,3,4,5,6,8,9,10等...但是如果我以速度爲基礎,並且步數達到10,我只能發送10個音量命令:10,20,30等 – Jason