You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MAUI MediaElement暂停时Position属性不更新问题求助

解决MAUI MediaElement暂停时拖拽进度条Position不更新的问题

针对你遇到的暂停状态下拖拽进度条后,MediaElement的Position属性未实时更新的问题,不需要自定义播放控件,用以下方法可以完美解决:

核心思路

默认播放控件拖拽进度条会触发Seek操作,即使视频处于暂停状态,SeekCompleted事件也会在拖拽完成后触发,此时MediaElement的Position已经同步了拖拽后的位置。我们只需要监听这个事件,实时保存最新的位置,点击按钮时直接使用保存的位置值即可。

代码实现

  1. 注册并监听PositionChanged和SeekCompleted事件,实时保存当前位置:
private TimeSpan _currentPosition;

public MainPage()
{
    InitializeComponent();

    MediaElement.PositionChanged += MediaElement_PositionChanged;
    MediaElement.SeekCompleted += MediaElement_SeekCompleted;
}

private void MediaElement_PositionChanged(object sender, MediaElementPositionChangedEventArgs args)
{
    Debug.WriteLine($"Position:{args.Position}");
    // 播放过程中实时更新位置
    _currentPosition = args.Position;
}

private void MediaElement_SeekCompleted(object sender, EventArgs e)
{
    // 拖拽进度条完成后更新位置(暂停状态下也会触发)
    _currentPosition = MediaElement.Position;
}
  1. 点击按钮时直接使用保存的_currentPosition:
private void MarkStartButton_OnClicked(object sender, EventArgs e)
{
    _startPoint = _currentPosition;
    UpdateTimePoint();
}

为什么这个方法更可靠

  • 完全保留默认播放控件,不需要自定义任何UI组件
  • 避免了Play()+延迟的不可靠性(不同设备延迟时间可能不同,极端情况延迟不够依然取不到正确位置)
  • 无论是播放中还是暂停拖拽后,都能实时获取到准确的当前位置

内容的提问来源于stack exchange,提问作者fairjm

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 03:27:22