c# - 在 Windows 10 通用应用程序中停止播放页面上的所有媒体元素

标签 c# xaml windows-store-apps windows-10 uwp

我正在这样的 xaml 页面上创建动态媒体元素和动态按钮:

MediaElement audioElement= new MediaElement();
audioElement.Source = new Uri(ApplicationData.Current.RoamingFolder.Path + "\\"+ audioFileName, UriKind.RelativeOrAbsolute);
audioElement.AutoPlay = false;
audioElement.Volume = 1;

然后点击按钮播放音频:

 audioElement.Play();

如何停止所有先前播放的媒体元素并一次只播放一个音频,因为有多个媒体元素具有不同的来源。

最佳答案

我已经解决了这个问题,使用全局 MediaElement 并播放和暂停相同的媒体元素,方法是在点击播放按钮时指定源。

希望这对您有所帮助。

if (null != audioPlayerElement.Source)
                    {
                        audioPlayerElement.Stop();
                        FrameworkElement elem = this.ContentPanel.FindName(audioPlayerElement.Tag.ToString()) as FrameworkElement;
                        RelativePanel audioPanel = elem as RelativePanel;

                        Button playButton = (from im in audioPanel.Children.OfType<Button>() select im).FirstOrDefault();
                        playButton.Tag = "PAUSED";
                        ImageBrush backgroundImage = new ImageBrush();
                        backgroundImage.ImageSource = new BitmapImage(new Uri(@"ms-appx:///Assets/Video_Play_button.png"));
                        backgroundImage.Stretch = Stretch.None;
                        playButton.Background = backgroundImage;

                        Slider prevSlider = (from im in audioPanel.Children.OfType<Slider>() select im).FirstOrDefault();
                        prevSlider.Value = 0;
                    }

audioPlayerElement = audioElement;

再次将本地媒体元素分配给全局媒体元素。

关于c# - 在 Windows 10 通用应用程序中停止播放页面上的所有媒体元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31874444/

相关文章:

c# - 如何强制任务等待子任务?

c# - FluentValidation 传递参数

c# - 每行设置 XAML Datagrid 文本颜色

wpf - 样式 WPF/Silverlight 组合框

javascript - 我们如何在运行时修改Windows应用商店应用程序包的 Assets

c# - 如何将本地存储图像复制到剪贴板 WinRT

c# - 获取 IEnumerable 项的第一个元素

c# - 太多的多边形 : XNA Framework Reach profile does not support 32 bit indices

c# - 文本框内容垂直拉伸(stretch)到可用大小

windows-8 - 将图像调整为字节数组