1

我是 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));

有什么我错过的吗?你们有其他方法可以推荐吗?

非常感谢,-代码

4

3 回答 3

2

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

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

于 2012-04-18T09:21:53.443 回答
0

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

于 2012-04-18T09:21:03.797 回答
0
         var t1 = App.Current as App;
         t1.SSIDToken = stData1SSID;
         t1.CSRFToken = stData1CSRF;

这真的很好,只需在 app.cs 文件中添加您需要的成员(这里是:

公共字符串 SSIDToken {get; 设置;} 公共字符串 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 = "" || 字符串 CSRFTk = App.Current.CSRFToken;

于 2012-04-19T12:34:21.377 回答