1

したがって、すぐにオブジェクトのリストにバインドされる LongListSelector があります。

私が欲しいのは、LongListSelectorItems の 1 つがタップされたときに特定のオブジェクトがタップされ、そのオブジェクトを別の画面に渡すことができるので、オブジェクトに関する完全な情報を表示できることです。

private void PeopleList_Tap_1(object sender, System.Windows.Input.GestureEventArgs e)
    { 
        MessageBox.Show("SUCCESS");
    }

私のタップは機能しています。選択されたオブジェクトを取得する方法や、NavigationService を使用して別のページに渡す方法がわかりません。

4

2 に答える 2

3

以下は私の最新のアプリから直接引き出されたものです。

オブジェクトを直接渡すことはできませんが、テキスト データを渡すことはできます。私の場合、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 を確認して、ルックアップを行う次のページに渡します。

これが役立つことを願っています。

于 2012-12-17T15:02:32.760 に答える
2

SelectionChangedイベントとLongListSelector.SelectedItemプロパティを使用して、選択したアイテムを取得できます。

于 2012-12-16T03:24:37.523 に答える