Slider.ValueChanged事件的默認行爲是在用戶拖動控件時多次觸發ValueChanged。有沒有辦法只在拖動結束時觸發這個事件?XAML Windows應用商店應用 - 在拖動期間忽略Slider.ValueChanged
我已經嘗試過的一件事是綁定到Thumb.DragStarted和Thumb.DragCompleted事件,並添加一些標誌來控制進程,但如果用戶在滑塊的主體中單擊,則不會觸發這些事件大拇指。
Slider.ValueChanged事件的默認行爲是在用戶拖動控件時多次觸發ValueChanged。有沒有辦法只在拖動結束時觸發這個事件?XAML Windows應用商店應用 - 在拖動期間忽略Slider.ValueChanged
我已經嘗試過的一件事是綁定到Thumb.DragStarted和Thumb.DragCompleted事件,並添加一些標誌來控制進程,但如果用戶在滑塊的主體中單擊,則不會觸發這些事件大拇指。
如果您不想自定義控件,則可以處理KeyUp
事件和PointerCaptureLost
事件,而不處理ValueChanged
事件。
private void slider_PointerCaptureLost(object sender, PointerRoutedEventArgs e)
{
HandleSliderValueChange();
}
private void slider_KeyUp(object sender, KeyRoutedEventArgs e)
{
//Make sure an arrow key, Home, or End was pressed
//either explicitly perform the flag checks
//if(e.Key.HasFlag(VirtualKey.Up & VirtualKey.Down & VirtualKey.Left & VirtualKey.Right & VirtualKey.Home & VirtualKey.End))
//or check the int values
int keyVal = (int)e.Key;
if(keyVal >= 35 && keyVal <= 40)
HandleSliderValueChange();
}
private void HandleSliderValueChange()
{
//your value changed code
}
此當用戶結束拖動,點擊滑塊本身,或使用的箭頭,主頁,或結束鍵來改變值應調用HandleSliderValueChange
方法。
PointerCaptureLost似乎很完美。謝謝。 – Badaro
我認爲更好的解決方案是限制ValueChanged事件。 – Denis