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个函数,只使用这一个来实现我所需要的。谢谢。您是否尝试过
操纵完成
/
指针压缩
/
指针删除
滑块事件?是否尝试过
操纵完成
/
指针压缩
/
滑块事件
事件?