私のアプリの基本的なナビゲーション機能は、リストボックスからアイテムを選択し、選択されたアイテムを判断してそのid
値を取得することで構成されています。値を次のページに渡しid
、Web クライアントで使用して新しいデータを取得するための API URL に追加します。これが私が今持っているものです。
選択したアイテムを決定し、2 番目のページに移動します。
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 を Web クライアントにプラグインすることです。
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 フレームワークについて少し読みました。これを処理するより良い方法でしょうか?もしそうなら、それはどのように機能しますか?助けてくれてありがとう。