我正在为XAML和C#编写WP8的音乐播放器应用程序,但是来自winforms背景我不知道如何执行以下操作。
我的主页面会打开一个单独的页面来显示音乐专辑的曲目。用户可以选择其中一些曲目,然后将其添加到工作正常的中央播放列表中,但我希望主页在歌曲选择页面关闭时调用其播放列表刷新功能。
如果我这样做,我会做类似的事情:
private void ShowAlbumPage(Int16 albumId)
{
albumPage.albumId = albumId;
albumPage.ShowDialog();
RefreshPlaylist();
}
但这不适用于XAML
我目前有这个:
private void ShowAlbumPage(Int16 albumId)
{
NavigationService.Navigate(new Uri("/AlbumPage.xaml?albumId=" + albumId.ToString(), UriKind.Relative));
}
有关如何以及何时调用RefreshPlaylist的任何建议?
答案 0 :(得分:1)
这是一个模糊的想法,但我想如果我分享我也可以改善。您可以将List传递给AlbumPage(当前集合),如果用户将歌曲添加到播放列表,将其添加到集合中,返回时只需发回集合并更新主页。
// MainPage.Xaml
private void list_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
SongsList selectedItemData = SelectedItem as SongsList ;
if(selectedItemData != null)
{
NavigationService.Navigate(new Uri(string.Format("/AlbumPage.xaml?parameter={0}",selectedItemData.ID ), UriKind.Relative));
}
}
//AlbumPAge.Xaml
protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e)
{
base.OnNavigatedTo(e);
string parameter = this.NavigationContext.QueryString["parameter"];
SongsList country = null;
// GETS THE SONG COLLECTION HERE , UPDATE WHEN USER ADD TO PLAYLIST , AND RETURN BACK.
}
**If your doing on MVVM Way .This is just an Idea not tested.**
视图模型包含歌曲集合,在两个页面上保持相同的视图模型,更新歌曲集合,以便主页UI自动更新。
ViewModel在相册页面上保持相同。
ObservableCollection<Songs> _songs=new ObservableCollection<Songs>();
_songs.Add(new songs{Artist="ArtistName",Album="AlbumName"});
// AlbumPage CodeBehind。
private AddSongtoPlaylist(Song currentSong)
{
_songs.Add(currentSong);
}
答案 1 :(得分:0)
您可以通过以下方式完成此任务:
PhoneApplicationService.State
字典的应用程序级别添加新选择的歌曲。每当您返回主页面时,请加载包含添加的歌曲的瞬态状态。IsolatedStorage
中,并在导航到主页时加载它们。QueryString
将其传回主页。您选择的方法只是个人偏好的问题。
答案 2 :(得分:0)
我想我找到了一个相当简单的解决方法 - 我刚刚在MainPage.xaml的OnNavigatedTo方法中调用了RefreshPlayQueue()。这似乎有效