以下は私の最新のアプリから直接引き出されたものです。
オブジェクトを直接渡すことはできませんが、テキスト データを渡すことはできます。私の場合、ID:
private void WishListBoxSelectionChanged(object sender, SelectionChangedEventArgs e)
{
if (WishListBox != null && WishListBox.SelectedItem != null)
{
var selectedItem = (Models.Gift)WishListBox.SelectedItem;
WishListBox.SelectedIndex = -1;
var id = selectedItem.Id;
NavigationService.Navigate(new Uri("/Views/Gift/GiftView.xaml?action=load&id=" + id, UriKind.Relative));
}
}
次に、受信側で:
protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e)
{
base.OnNavigatedTo(e);
if (NavigationContext.QueryString.ContainsKey("action"))
{
if (NavigationContext.QueryString["action"]=="load")
{
PageTitle.Text = "edit gift";
giftVm.Gift = App._context.Gifts.Single(g => g.Id == Int32.Parse(NavigationContext.QueryString["id"]));
}
else if (NavigationContext.QueryString["action"] == "new")
{
PageTitle.Text = "new gift";
}
else if (NavigationContext.QueryString["action"] == "newWishList")
{
App.vm = ((MainViewModel)App.vm).Me;
}
}
else
{
MessageBox.Show("NavigationContext.QueryString.ContainsKey('action') is false");
}
}
私の場合、データはDBに保存されます。選択したアイテムを正しいオブジェクト タイプにキャストし、その ID を確認して、ルックアップを行う次のページに渡します。
これが役立つことを願っています。