C# 基于滑块值更新mediaElement
我有一个C# 基于滑块值更新mediaElement,c#,wpf,slider,windows-store-apps,C#,Wpf,Slider,Windows Store Apps,我有一个媒体元素和一个滑块 滑块的最大值是视频的持续时间(以秒为单位)(例如,如果视频为2分钟,则滑块的值为120) 我想根据滑块的值更新mediaElement.Position,但问题是,在用户完成对值的操作之前,我不想更新位置 所以我做了两个函数: private void DurationSlider_ManipulationCompleted(object sender, ManipulationCompletedRoutedEventArgs e) { SeekToMedia
媒体元素
和一个滑块
滑块的最大值是视频的持续时间(以秒为单位)(例如,如果视频为2分钟,则滑块的值为120) 我想根据滑块的值更新mediaElement.Position,但问题是,在用户完成对值的操作之前,我不想更新位置 所以我做了两个函数:
private void DurationSlider_ManipulationCompleted(object sender, ManipulationCompletedRoutedEventArgs e)
{
SeekToMediaPosition();
}
如果用户停止操纵滑块,则此函数适用
private void DurationSlider_ValueChanged(object sender, RangeBaseValueChangedEventArgs e)
{
SeekToMediaPosition();
}
如果用户单击滑块中的不同值,则此函数适用
private void DurationSlider_ValueChanged(object sender, RangeBaseValueChangedEventArgs e)
{
SeekToMediaPosition();
}
问题是它们相互冲突。操纵滑块会导致更改值 我所做的就是添加了这个函数:
bool manipulating = false;
private void DurationSlider_ManipulationStarted(object sender, ManipulationStartedRoutedEventArgs e)
{
manipulating = true;
}
在ValueChanged函数中,我检查了操纵=true
与否它解决了一半的问题-在操作时它不会改变视频位置(直到我完成),但如果我单击滑块上的不同位置(而不释放鼠标)然后继续操纵滑块的值-它将视频位置更改为我单击滑块的位置,然后再次更改为我结束操纵的位置 那怎么了?
我只想在用户释放鼠标时更改视频位置。
我找不到触发所需内容的事件…您可以使用PointerCaptureLost事件在用户完成拖动控件后确定位置
<Slider PointerCaptureLost=="Slider_PointerCaptureLost"
Height="27" Margin="132,162,0,0" VerticalAlignment="Top" Width="303"/>
用户完成拖动控件后,可以使用PointerCaptureLost事件确定位置
<Slider PointerCaptureLost=="Slider_PointerCaptureLost"
Height="27" Margin="132,162,0,0" VerticalAlignment="Top" Width="303"/>
1.Windows应用商店应用程序中没有此类事件。2.操纵已完成是等效的,因此问题保持不变。是的,它确实解决了问题。我可以放弃这3个函数,只使用这一个来实现我所需要的。谢谢。Windows应用商店应用程序中没有此类事件。2.操纵已完成是等效的,因此问题保持不变。是的,它确实解决了问题。我可以放弃这3个函数,只使用这一个来实现我所需要的。谢谢。您是否尝试过
操纵完成
/指针压缩
/指针删除
滑块事件?是否尝试过操纵完成
/指针压缩
/滑块事件
事件?