如何在xaml页面之间传递longlistselector数据

时间:2014-03-11 13:16:07

标签: windows-phone-8

我试图在xaml页面之间传递longlistselector数据。但它不起作用。

如何使用查询字符串或任何其他可能的解决方案传递数据。请帮帮我

我试过这段代码:

public class PaymentItem
    {
        public string Home { get; set; }
        public string FirstName { get; set; }
        public string LastName { get; set; }
        public string Address { get; set; }
        public string Code { get; set; }
        public string City { get; set; }
    }
    public class PaymentList : ObservableCollection<PaymentItem>
    {
        public PaymentList()
        {
            Add(new PaymentItem { Home = "Home", FirstName = "Kevin", LastName = "Peter", Address = "paris", Code = "23343", City = "France" });
        }
    }

    private void imgEditdAddress_Tap(object sender, System.Windows.Input.GestureEventArgs e)
    {
        PaymentItem dataItem = ((FrameworkElement)sender).DataContext as PaymentItem;

我对此部分有疑问 我想将dataItem值传递给另一个编辑页面

        this.NavigationService.Navigate(new Uri("ModifiedAddress.xaml", UriKind.RelativeOrAbsolute));
    }

4 个答案:

答案 0 :(得分:1)

Querystrings不能与用户定义的对象一起使用,因为它只存储单个变量。

您可以在IsolatedStorage应用程序设置中存储用户定义的对象

在执行导航之前保存您的对象

 IsolatedStorageSettings.ApplicationSettings["State"] = dataItem;
 IsolatedStorageSettings.ApplicationSettings.Save();

和第二页OnNavigatedTo Handler只需返回对象

 if (IsolatedStorageSettings.ApplicationSettings.Contains("State") == true)
 {
 var object= IsolatedStorageSettings.ApplicationSettings["State"] as PaymentItem;
 //Remove the state now
 IsolatedStorageSettings.ApplicationSettings.Remove("State");
 IsolatedStorageSettings.ApplicationSettings.Save();
 }

答案 1 :(得分:0)

您可以在导航查询中使用某种相关信息进行导航。

NavigationService.Navigate(new Uri("/ModifiedAddress.xaml?paymentId=1", UriKind.Relative));

然后在SomePage上解析该Id,并从某种类型的存储库中获取PaymentItem ......

很难根据您提供的代码提供更多信息。

第二个选项(更糟糕的是)通过App类共享项目,可以从所有页面实际访问。

答案 2 :(得分:0)

为Aman的回答添加一些选项:

您还可以通过导航事件将变量传递到站点。您可以通过覆盖页面的OnNavigatedFrom事件并将可访问属性添加到要传递内容的页面来实现。

示例:

Page1.xaml.cs

protected override OnNavigatedFrom(...args... e)
{
   if(e.Uri.OriginalString.Contains("Page2.xaml"))
   {
      ((Page2)e.Content).SourceList = Page1LongListSelector.ItemSource;
   }
}

然后Page2:

Page2.xaml.cs

public List<SomeObject> SourceList
{
    get;
    set;
}

....
Page2LongListSelector.ItemSource = SourceList;
....

这可以完成,因为导航完成后会调用OnNavigatedFrom事件并构建第二页。

答案 3 :(得分:0)

您可以尝试使用OnNavigatedTo方法获取您正在navgating的页面中的数据。

阅读本文以了解其工作原理:

How to pass data between pages in Windows Phone: Alternatives

下载此示例后,探索代码:

Passing Data between Pages

希望有帮助!问候!