我的应用程序的基本导航功能包括从列表框中选择一个项目,确定选择了什么项目并获取它的id
值。将id
值传递到下一页并将其添加到 api url 以在 webclient 中使用以提取新数据。这就是我现在所拥有的。
确定选择的项目并导航到辅助页面。
public void genreSelectedHandler(object sender, RoutedEventArgs e)
{
ResultGenre data = (sender as TextBlock).DataContext as ResultGenre;
ListBoxItem pressedItem = this.listGenres.ItemContainerGenerator.ContainerFromItem(data) as ListBoxItem;
if (pressedItem != null)
{
string genreID = "http://api.beatport.com/catalog/3/beatport/genre?id=" + data.id;
this.NavigationService.Navigate(new Uri("/Pages/GenrePage.xaml?genreID=" + genreID, UriKind.Relative));
}
}
在辅助页面上,我可以使用 OnNavigatedTo 从上一页获取 url,但我坚持的部分是将 url 插入 webclient。
public GenrePage()
{
InitializeComponent();
// WebClient jsonRelease
WebClient jsonGenres = new WebClient();
Uri apiGenre = new Uri("URL from previous page goes here");
jsonGenres.DownloadStringCompleted += new DownloadStringCompletedEventHandler(jsonGenres_GetDataCompleted);
jsonGenres.DownloadStringAsync(apiGenre);
}
// Textblock data from main page
protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e)
{
string genreID = "";
if (NavigationContext.QueryString.TryGetValue("genreID", out genreID))
base.OnNavigatedTo(e);
}
似乎我唯一能做的就是将 url 添加到辅助页面上的现有控件中。有没有更好的方法来完成我想要做的事情?我已经阅读了一些关于 MVVM 框架的内容。这会是更好的处理方法吗?如果是这样,那将如何工作?谢谢您的帮助。