【发布时间】:2016-10-07 06:47:36
【问题描述】:
我正在学习通用 Windows 平台,目前正在使用来自 this 站点的 SoundCloud API 分析音乐播放器。 github 项目的链接位于页面的最底部。要使该项目正常工作,应填写来自 App.xaml.cs 的变量 SoundCloudClientId(我在同一页面上使用了上一个示例中的客户端 ID,不确定是否可以粘贴)。
当应用程序启动时,NowPlaying 页面被加载并且更改曲目会导致 UI 相应地更新。问题是当我导航到任何其他页面并返回到 NowPlaying 时。我仍然可以使用按钮更改音乐,但 UI 不会更改(歌曲标题、专辑标题等)。
代码的重要部分: NowPlaying.xaml
<ImageBrush x:Name="albumrtImage" ImageSource="Assets\Albumart.png" Stretch="UniformToFill" />
<TextBlock x:Name="txtSongTitle" Grid.Row="0" HorizontalAlignment="Center" Text="Song Title " FontSize="25" Foreground="White" Style="{StaticResource HeaderTextBlockStyle}" TextTrimming="WordEllipsis" />
<TextBlock x:Name="txtAlbumTitle" Grid.Row="0" Text="Label " HorizontalAlignment="Center" FontWeight="Light" FontSize="20" Foreground="#9799a5" Style="{StaticResource BodyTextBlockStyle}" TextTrimming="WordEllipsis"/>
NowPlaying.xaml.cs
async void BackgroundMediaPlayer_MessageReceivedFromBackground(object sender, MediaPlayerDataReceivedEventArgs e)
{
TrackChangedMessage trackChangedMessage;
if (MessageService.TryParseMessage(e.Data, out trackChangedMessage))
{
// When foreground app is active change track based on background message
await this.Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () =>
{
var songIndex = GetSongIndexById(trackChangedMessage.TrackId);
if (songIndex >= 0)
{
var song = App.likes[songIndex];
LoadTrack(song); //Update UI
}
});
return;
}
BackgroundAudioTaskStartedMessage backgroundAudioTaskStartedMessage;
if (MessageService.TryParseMessage(e.Data, out backgroundAudioTaskStartedMessage))
{
backgroundAudioTaskStarted.Set();
return;
}
}
private async void LoadTrack(SoundCloudTrack currentTrack)
{
try
{
//Change album art
string albumartImage = Convert.ToString(currentTrack.artwork_url);
if (string.IsNullOrWhiteSpace(albumartImage))
{
albumartImage = @"ms-appx:///Assets/Albumart.png";
}
else
{
albumartImage = albumartImage.Replace("-large", "-t500x500");
}
//Next 3 lines when pages were switched don't cause UI to update
albumrtImage.ImageSource = new BitmapImage(new Uri(albumartImage));
txtSongTitle.Text = currentTrack.title;
txtAlbumTitle.Text = Convert.ToString(currentTrack.user.username);
}
catch (Exception ex)
{
MessageDialog showMessgae = new MessageDialog("Something went wrong. Please try again. Error Details : " + ex.Message);
await showMessgae.ShowAsync();
}
}
从 NowPlaying->Me->NowPlaying 导航并单击下一步后,曲目更改,但 UI 未更新,如下面的屏幕所示:
我试图在一个简单的例子中重现这个问题,但没有任何运气。什么可能导致这个问题?任何帮助表示赞赏。
【问题讨论】:
-
你从哪里调用这个?您在调试输出中看到任何错误吗?请发布更完整的示例,或尝试找到重现此问题所需的最少代码。
-
调试输出中没有错误。源代码在我上面链接的网站上,link to github。我将尝试重现该问题并在下面发布链接。
-
请不要在问题中添加解决方案或在标题中添加“已解决”。发布解决方案作为答案。
标签: c# xaml win-universal-app uwp uwp-xaml