gpt4 book ai didi

c# - windows phone,实例化一个页面并展示

转载 作者:行者123 更新时间:2023-11-30 12:10:42 24 4
gpt4 key购买 nike

是否可以从另一个项目实例化一个PhoneApplicationPage(在同一个解决方案中,但这应该不重要,不是吗?)并显示它?

好吧,我知道可以用以下方法实例化另一个页面:

MyPageInProjectB bPage= new MyPageInProjectB ();

但我该如何显示呢?

我想做以下事情:我有两个项目,我想在另一个项目中显示一个项目的页面并在它们之间传递数据。所以我认为这将是完美的:

public partial class MyPageInProjectA : PhoneApplicationPage
{
private MyPageInProjectB bPage;

public MyPageInProjectA()
{
InitializeComponent();

MyComplexObject objectIWantToPassToOtherPage = new MyComplexObject ();

bPage= new MyPageInProjectB (objectIWantToPassToOtherPage);
}

private void ShowBPageButton_Click(object sender, EventArgs e)
{
// this is now what I want to do, but what doesn't work
bPage.Show();
}
}

或者有其他方法可以在这些页面之间传递复杂数据吗?

我不想使用查询字符串,因为有时会发生(反)序列化程序在 MyComplexObject 方面出现问题。

我阅读了如何在这个线程的两个页面之间导航:How to redirect to a page which exists in specif project to another page in other project in the same solution?但我想将一个复杂的对象从一个页面传递到另一个页面。我该怎么做?

最佳答案

编辑:好的,现在仔细阅读你的问题后,我可以给你一个更好的答案。

首先,您不能将数据传递给页面构造函数,因为运行时本身会在导航时处理实例创建,您只能使用 NavigationService 进行导航。但是,您还有其他选择。

其中一个正在使用查询字符串,但如果您不想使用它,您可以使用 PhoneApplicationService 来存储您的复杂对象并让另一个页面从中读取。

// In source page
MyComplexObject objectIWantToPassToOtherPage = new MyComplexObject ();
PhoneApplicationService.Current.State["MyComplexObject"] = objectIWantToPassToOtherPage;
NavigationService.Navigate(new Uri("/ProjectB;component/MyPageInProjectB.xaml", UriKind.Relative));

// In destination page's constructor
public MyPageInProjectB() {
var myComplexObject = (MyComplexObject) PhoneApplicationService.Current.State["MyComplexObject"];
// ...
}

除此之外就是使用全局变量。这些是我能想到的唯一选择。


要导航到类库 ProjectB 中的页面,您需要使用类似于以下内容的 uri:

/{assemblyName};component/{path}

对于您的情况,您可以执行以下操作:

NavigationService.Navigate(new Uri("/ProjectB;component/MyPageInProjectB.xaml", UriKind.Relative));

请注意,我在此处指定了相对路径,因此 MyPageInProjectB.xaml 需要位于 ProjectB 内的根文件夹中才能使上述示例正常工作。

关于c# - windows phone,实例化一个页面并展示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17471517/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com