我用MediaElement开发windows phone 8播放流媒体歌曲的应用程序。我希望在准备歌曲时显示ProgressRing,并在播放歌曲时隐藏它。我执行下面的代码,但没有显示ProgressRing!!
progressRing.IsActive = true;
mediaElement.Source = new Uri(url, UriKind.Absolute);
mediaElement.Play();
progressRing.IsActive = false;发布于 2015-09-08 13:52:24
您需要将控制权交给UI线程,才能显示进度环。要做到这一点,一种方便的方法是等待Task.Delay (等待足够长的延迟以确保UI可以刷新):
private async Task Play()
{
progressRing.IsActive = true;
await Task.Delay(15);
mediaElement.Source = new Uri(url, UriKind.Absolute);
mediaElement.Play();
progressRing.IsActive = false;
}(请注意,您必须确保将您的方法标记为异步)
另一种方法是调用Dispatcher.BeginInvoke (这似乎有悖于直觉,似乎你已经在UI线程中,但它是有效的):
progressRing.IsActive = true;
Dispatcher.BeginInvoke(() =>
{
mediaElement.Source = new Uri(url, UriKind.Absolute);
mediaElement.Play();
progressRing.IsActive = false;
});发布于 2015-09-09 00:55:05
MediaElement.MediaOpened事件在媒体加载完成时激发。尝试将该事件添加到MediaElement,并将progressRing.IsActive语句移动到EventHandler方法。
mediaElement1.MediaOpened += new System.Windows.RoutedEventHandler(mediaElement1_MediaOpened);
progressRing.IsActive = true;
mediaElement1.Source = new Uri(url, UriKind.Absolute);
mediaElement1.Play();
private void mediaElement1_MediaOpened(object sender, RoutedEventArgs e)
{
progressRing.IsActive = false;
}https://stackoverflow.com/questions/32448929
复制相似问题