我试图在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));
}
答案 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
下载此示例后,探索代码:
希望有帮助!问候!