WinUI 3中如何捕获MediaTransportControl的播放按钮事件?
如何在MediaPlayerElement的播放按钮点击时执行自定义C#代码?
当然可以实现,不需要直接绑定传输控件的点击事件,而是通过监听MediaPlayer的CurrentStateChanged事件来捕捉播放状态变化,进而触发你的自定义逻辑。具体步骤如下:
- 给XAML中的
MediaPlayerElement添加Loaded事件,确保控件初始化完成后再绑定媒体状态监听事件:
<MediaPlayerElement Visibility="Visible" x:Name="mp" Source="C:/Users/Brian/Videos/happy.mp4" AutoPlay="False" AreTransportControlsEnabled="True" Stretch="UniformToFill" Loaded="MediaPlayerElement_Loaded" > </MediaPlayerElement>
- 在代码后台(比如
MainPage.xaml.cs)实现事件处理逻辑:
private void MediaPlayerElement_Loaded(object sender, RoutedEventArgs e) { // 绑定MediaPlayer的状态变化事件 mp.MediaPlayer.CurrentStateChanged += MediaPlayer_CurrentStateChanged; } private void MediaPlayer_CurrentStateChanged(MediaPlayer sender, object args) { // 当媒体状态切换为Playing时,执行自定义代码 if (sender.PlaybackSession.PlaybackState == MediaPlaybackState.Playing) { // 这里替换成你需要运行的C#逻辑 System.Diagnostics.Debug.WriteLine("播放按钮被点击,媒体开始播放"); // 示例操作:更新UI提示、记录播放日志等 } }
补充说明
传输控件是封装好的组件,内部按钮并不对外暴露直接的点击事件,所以通过监听MediaPlayer的播放状态变化是最稳妥的方案。如果需要区分是用户点击播放按钮触发的播放,还是代码调用Play()或自动播放导致的状态变化,可以额外维护状态标记来做区分,不过大部分场景下监听Playing状态已经能满足需求。
内容的提问来源于stack exchange,提问作者user1094779
相关产品推荐
相关产品推荐

