C# xaml页面关闭后运行代码

C# xaml页面关闭后运行代码,c#,xaml,windows-phone-8,C#,Xaml,Windows Phone 8,我正在用XAML和C为WP8编写一个音乐播放器应用程序,但来自winforms的背景,我不知道如何执行以下操作 “我的主页”会打开一个单独的页面来显示音乐专辑的曲目。用户可以选择其中一些曲目,然后将其添加到工作正常的中央播放列表中,但我希望主页在歌曲选择页面关闭时调用其播放列表刷新功能 如果我以winforms的身份执行此操作,我会执行以下操作: private void ShowAlbumPage(Int16 albumId) { albumPage.album

我正在用XAML和C为WP8编写一个音乐播放器应用程序,但来自winforms的背景,我不知道如何执行以下操作

“我的主页”会打开一个单独的页面来显示音乐专辑的曲目。用户可以选择其中一些曲目,然后将其添加到工作正常的中央播放列表中,但我希望主页在歌曲选择页面关闭时调用其播放列表刷新功能

如果我以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,您有什么建议吗?

您可以通过以下几种方式完成此操作:

在PhoneApplicationService.State字典的应用程序级别添加新选择的歌曲。无论何时返回主页,都要加载包含添加歌曲的瞬态。 将它们保存在应用程序级别的变量中,并在导航到主页时加载播放列表。 将它们存储在IsolatedStorage中,并在导航到主页时加载它们。 通过导航查询字符串将它们传递回主页面。
你选择的方法只是个人喜好的问题。

这是一个模糊的想法,但我认为如果我分享,我也可以改进。您可以将列表传递到当前唱片集的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在相册页面上维护相同的内容


我想我已经找到了一个相当简单的解决方法——我刚刚在MainPage.xaml的OnNavigatedTo方法中调用了RefreshPlayQueue。这似乎有效

您是否在新窗口中加载该页面?我正在使用NavigationService导航到一个新的歌曲选择页面。Navigation我想我已经有了类似的东西-我将播放列表作为公共静态列表存储在一个单独的类中,该类可以从两个xaml页面访问。这看起来与我已有的类似谢谢,但是当我们关闭歌曲选择页面时,我正在寻找一种调用AddSongtoPlaylist的方法。我刚刚注意到您使用的是ObsertvableCollection,这是我以前从未遇到过的-我会研究一下-谢谢@Weetobix Observable Collection的优势优于list,它会通知用户界面在集合中添加/删除,这样用户就可以在不使用任何代码的情况下更新用户界面。感谢Eldho-我将使用Observable Collection进行播放和重写:
ObservableCollection<Songs> _songs=new ObservableCollection<Songs>();
_songs.Add(new songs{Artist="ArtistName",Album="AlbumName"});
private AddSongtoPlaylist(Song currentSong)
{
  _songs.Add(currentSong);
}