我有一个mediaElement
和一个slider
。
滑块的最大值是以秒为单位的视频持续时间(例如,如果视频为 2 分钟,则滑块的值为 120)。
我想根据滑块的值更新 mediaElement.Position 但问题是我不想在用户完成操作值之前更新位置。
所以我做的是2个功能:
private void DurationSlider_ManipulationCompleted(object sender, ManipulationCompletedRoutedEventArgs 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 函数中,我检查了它是否manipulating = true
解决
了一半的问题 - 它在操作时不会改变视频位置(直到我完成)但是如果我点击滑块上的不同位置(不释放鼠标)并继续操作滑块的值 - 它将视频位置更改为我单击滑块的位置,然后再次更改为我结束操作的位置。
那么怎么了?
我只想在用户释放鼠标时更改视频位置。我找不到触发我想要的事件...