我是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
答案 0 :(得分:2)
您发布的内容是传输有关该地点的简单数据的好方法。但是,当您必须在页面之间传递复杂对象时,它会变得很痛苦。
推荐的方法是使用MVVM模式(来自wikipedia和MSDN)。这为您提供了一种通过使用数据绑定将View与其他所有内容分开的方法。我见过的最好的教程是观看videos on MSDN。
答案 1 :(得分:0)
您可能需要考虑具有可存储当前Meeting对象的属性的manager类。然后,这将在SelectionChanged事件处理程序中设置,然后在MeetDetails页面中进行访问。经理类在您的页面外部定义,以便可以从您的所有页面访问它。
答案 2 :(得分:0)
var t1 = App.Current as App;
t1.SSIDToken = stData1SSID;
t1.CSRFToken = stData1CSRF;
这样做真的很好,只需在app.cs文件中创建你需要的成员 (这是:
public string SSIDToken {get;组;} public string CSRFToken {get;设置;}
然后创建顶部代码以创建var作为临时缓冲区。 如果要返回值,请使用相同的代码:
var t1 = App.Current as App;
thisisatextbox.Text = t1.SSIDToken;
thisisalsoatextbox.Text = t1.CSRFToken;
编辑:经过几个月的经验,发现你可以添加
public static new App Current
{
get { return Application.Current as App; }
}
在App.xaml(在公共类App中)能够调用App.Current而不必每次都声明它!
现在您可以使用App.Current.CSRFToken =“”|| string CSRFTk = App.Current.CSRFToken;