在Windows Phone / C#中的类之间传递对象

我是Windows Phone和C#的新手,享受Objective-C和Java的变化。

我无法找到将对象从一个类传递到另一个类的方法。 我在MSDN上看到了一些示例代码,但我认为它可能不适用于我需要的内容。

private void meetingList_SelectionChanged(object sender, SelectionChangedEventArgs e) { if (meetingList.SelectedIndex != -1) { Meeting aMeeting = (Meeting)meetingList.SelectedItem; this.NavigationService.Navigate(new Uri("/MeetDetails.xaml", UriKind.Relative)); ApplicationBar.IsVisible = true; } } 

如何将会议对象’aMeeting’传递到我的MeetDetails类,以便我可以向用户显示所有详细信息。

我知道我可以将其分解,并使用以下内容传递来自’aMeeting’的所有变量:

 this.NavigationService.Navigate(new Uri("/MeetDetails.xaml?Meeting=" + aMeeting.meetName + "&TheDate=" + aMeeting.meetDate, UriKind.Relative)); 

有没有我错过的东西? 你们会推荐其他方式吗?

非常感谢,-Code

  var t1 = App.Current as App; t1.SSIDToken = stData1SSID; t1.CSRFToken = stData1CSRF; 

这真的很好,只需在app.cs文件中创建你需要的成员(这里是:

public string SSIDToken {get; set;} public string CSRFToken {get; 组;}

然后创建顶部代码以创建一个var作为临时缓冲区。 如果要返回值,请使用相同的代码:

  var t1 = App.Current as App; thisisatextbox.Text = t1.SSIDToken; thisisalsoatextbox.Text = t1.CSRFToken; 

更多信息; http://www.eugenedotnet.com/2011/07/passing-values-between-windows-phone-7-pages-current-context-of-application/

编辑:经过几个月的经验,发现你可以添加

 public static new App Current { get { return Application.Current as App; } } 

在App.xaml(在公共类App中)能够调用App.Current而不必每次都声明它!

现在你可以使用App.Current.CSRFToken =“”|| string CSRFTk = App.Current.CSRFToken;

您发布的内容是传输有关该地点的简单数据的好方法。 但是,当您必须在页面之间传递复杂对象时,它会变得很痛苦。

推荐的方法是使用MVVM模式(来自维基百科和MSDN )。 这为您提供了一种通过使用数据绑定将View与其他所有内容分开的方法。 我见过的最好的教程是在MSDN上观看video 。

您可能需要考虑具有可存储当前Meeting对象的属性的manager类。 然后,这将在SelectionChanged事件处理程序中设置,然后在MeetDetails页面中进行访问。 经理类在您的页面外部定义,以便可以从您的所有页面访问它。