我需要将列表框中的选定项目传递给编辑页面。我使用此代码从listBox获取数据,但我不知道如何将类任务传递到下一页。
private void HoldingItem(object sender, HoldingRoutedEventArgs e)
{
FrameworkElement element = (FrameworkElement)e.OriginalSource;
Tasks tsk = (Tasks)element.DataContext;
//我填写了课程,但我不知道在另一页上获取数据很热
Frame.Navigate(typeof(Edit), tsk);
}
页面编辑 - 获取参数
protected override void OnNavigatedTo(NavigationEventArgs e)
{
this.navigationHelper.OnNavigatedTo(e);
testlbl.Text = e.Parameter.ToString(); //it doesnt work. I can't manage the class
}
由于
答案 0 :(得分:0)
您需要将e.Paramater
类型转换为Tasks
(即。)到您要传递的对象类型。
var objectFromPage1=(e.Parameter as Tasks);
答案 1 :(得分:0)
您应该将对象存储在模型中的某个位置,并将一些标识符作为参数传递。
请注意不同的页面没有连接,你不应该直接移交对象。
答案 2 :(得分:0)
传递对象并不容易。 您应该阅读这篇文章了解详细信息: http://www.geekchamp.com/tips/how-to-pass-data-between-pages-in-windows-phone-alternatives
对于复杂对象,您应该遵循以下模式: http://www.geekchamp.com/articles/wp7-master---detail-navigation-with-repository-pattern
基本思路很简单。您可以将对象存储在某种存储(存储库)中,将对象的Id传递给下一页,然后通过Id从存储中检索对象。
当您准备好导航
时NavigationService.Navigate(new Uri(string.Format("/Page.xaml?parameter={0}",item.Id ), UriKind.Relative));
在您的页面上阅读查询中的ID:
protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e)
{
base.OnNavigatedTo(e);
string parameterValue = NavigationContext.QueryString["parameter"];
int id = Int32.Parse(parameterValue);
var yourItem = _storage.GetById(id);
}