如何在多个页面之间共享 属性 / 在导航中按引用传递?
How to share property between multiple pages / pass by reference in navigation?
我正在编写一个 UWP 程序,我希望在多个页面之间共享一个公共 property/field。我试图在父页面中创建一个模型(或者可能是视图模型)实例,并将该实例作为 Frame.Navigate
方法的参数传递给子页面。但是,由于 C# 中的参数是按值传递的,并且 Frame.Navigate 不支持引用或输出,因此我预计在多个页面之间实际共享此实例是行不通的。
我的问题是
- 这是在页面之间共享值的常见做法吗?它会起作用吗?
- 如果没有,建议的方法是什么?
- 如果是,为什么会起作用?
如果您想在多个页面之间共享一个模型的相同值,请将您的模型设为静态 class。以便他们共享一份副本。
如果值是逐页修改的,那么你可以传递模型的对象,并可以在下一页的 OnNavigatedTo 中检索相同的值
ItemModel objEditItem;
protected override void OnNavigatedTo(NavigationEventArgs e)
{
if (e.Parameter != null)
{
objEditItem = new ItemModel();
objEditItem = e.Parameter as ItemModel;
}
}
我正在编写一个 UWP 程序,我希望在多个页面之间共享一个公共 property/field。我试图在父页面中创建一个模型(或者可能是视图模型)实例,并将该实例作为 Frame.Navigate
方法的参数传递给子页面。但是,由于 C# 中的参数是按值传递的,并且 Frame.Navigate 不支持引用或输出,因此我预计在多个页面之间实际共享此实例是行不通的。
我的问题是
- 这是在页面之间共享值的常见做法吗?它会起作用吗?
- 如果没有,建议的方法是什么?
- 如果是,为什么会起作用?
如果您想在多个页面之间共享一个模型的相同值,请将您的模型设为静态 class。以便他们共享一份副本。
如果值是逐页修改的,那么你可以传递模型的对象,并可以在下一页的 OnNavigatedTo 中检索相同的值
ItemModel objEditItem;
protected override void OnNavigatedTo(NavigationEventArgs e)
{
if (e.Parameter != null)
{
objEditItem = new ItemModel();
objEditItem = e.Parameter as ItemModel;
}
}