Windows phone - 将失败类传递给另一个页面

时间:2015-01-14 18:43:47

标签: c# windows-phone-8

我需要将列表框中的选定项目传递给编辑页面。我使用此代码从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

        }

由于

3 个答案:

答案 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);
}