我正在尝试更改页面并将一些数据发送到刚刚创建的新页面。基本上,我有一个用户可以登录的页面,我要保存信息,然后我将打开一个新的页面,将信息发送到我的“profil”页面,用户将获得有关他的信息帐户。我正在使用MVVM模式,我不知道它是否会改变某些东西,但我会提高这种精度;)。
编辑:我找到的唯一解决方案是传递我的对象的字符串(很高兴它只是字符串)。因为我们可以将字符串传递给另一个页面但我更愿意直接提供我的对象,或者在需要时更改我的架构。就像不创建页面但用其他人替换我的Usercontroles一样:(。
感谢您的帮助。
答案 0 :(得分:0)
对于临时数据:
如果是WP silverlight应用程序,我们可以在源页面的OnNavigateFrom事件中直接将对象分配给目标页面的公共属性。例如,我们可以在Dest页面上声明一个公共属性A,并在Source页面中实现以下内容以传递用户对象:
protected override void OnNavigatedFrom(NavigationEventArgs e)
{
Dest destPage = e.Content as Dest;
if(destPage != null)
{
User a = new User();
a.UserName = "aa";
a.ID = 1;
destPage.A = a;
}
}
对于WP 8.1上的WP运行时应用程序,您可以直接使用Frame.Navigate(TypeName,Object)来传递参数。
对于持久数据:
我建议将数据存储在源页面上的本地存储中,并从目标页面读取。
答案 1 :(得分:0)
如果我理解正确,你应该在导航URI中使用参数 例如,要发送名称,您可以使用:
NavigationService.Navigate(new Uri("/View/Page.xaml?name=UserName", UriKind.Relative));
然后在OnNavigatedTo()中检查名称参数:
string name;
NavigationContext.QueryString.TryGetValue("name", out name);
答案 2 :(得分:0)
您可以使用IsolatedStorageSettings.ApplicationSettings["keyname"]=yourobject;
无论何时您想使用此值,只需将此值取消,如下所示,
if(IsolatedStorageSettings.ApplicationSettings.Contains("keyname"))
{
var obj=(yourobject)IsolatedStorageSettings.ApplicationSettings["keyname"];
}