[英]DragStarted event is not getting in UWP Slider - c#
我想根據拖動滑塊的數量來更改視頻位置。 這樣我想使用DragStarted和DragCompleted事件。 但是它顯示“本地屬性'Dragstarted'只能應用於從'Thumb'派生的類型”。 如何將其包含在我的應用程序中?
<Slider Name="timelineSlider" Thumb.DragCompleted= "timelineSlider_DragCompleted" DragStarting="timelineSlider_DragStarting" DragOver="timelineSlider_DragOver" Width="300" />
還發現有DragStarting和DragOver事件。 它具有Dragstarted和DragCompleted事件的相同功能嗎? 不幸的是,拖動滑塊時,不會啟動DragStarting和DragOver事件。
您可以嘗試使用Slider的ManipulationStarted和ManipulationCompleted事件。
<Slider ManipulationCompleted="Slider_ManipulationCompleted" ManipulationMode="All" ManipulationStarted="Slider_ManipulationStarted"/>
如果要處理諸如應用程序代碼中的UI元素中的ManipulationStarted之類的操作事件,則必須將ManipulationMode設置為System或None以外的值。
private void Slider_ManipulationCompleted(object sender, ManipulationCompletedRoutedEventArgs e)
{
var slide= sender as Slider;
Debug.WriteLine(slide.GetType().ToString());
Debug.WriteLine(slide.Value+ ">>Slider_ManipulationCompleted");
}
private void Slider_ManipulationStarted(object sender, ManipulationStartedRoutedEventArgs e)
{
var slide = sender as Slider;
Debug.WriteLine(slide.GetType().ToString());
Debug.WriteLine(slide.Value+ "Slider_ManipulationStarted");
}
您可以更輕松地使用ValueChanged
事件查看Slider
位置的變化:
<Slider x:Name="Slider" ValueChanged="Slider_OnValueChanged" />
您可以使用e.NewValue
獲取滑塊的新值,並使用e.OldValue
獲取先前的位置。
private void Slider_OnValueChanged(object sender, RangeBaseValueChangedEventArgs e)
{
Debug.WriteLine($"Slider moved from {e.OldValue} to {e.NewValue}");
}
PointerCaptureLost
在UWP App中效果很好。
考試XAML:
<Slider x:Name="SeekSlider" PointerCaptureLost="SeekSlider_PointerCaptureLost"/>
示例C#:
private void SeekSlider_PointerCaptureLost(object sender, Windows.UI.Xaml.Input.PointerRoutedEventArgs e)
{
Slider slider = sender as Slider;
if (slider != null)
{
//mediaPlayer.Position = (float)slider.Value;
}
}
這個對我有用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.