如何在Metro应用程序中导航到新页面?

5

我现在正在尝试用C#编写一个Metro应用程序。在尝试导航到新页面时遇到了问题。

<HyperLinkButton NavigateUri="foo.xaml"/> 

无法工作,因为NavigateUri字段不存在。Windows.Navigate命名空间也不可用,所以没有运气。在我的应用程序中转到新页面的正确方法是什么?


这是WPF吗?如果是,请添加标签(我决定不确定,所以我删除了我的编辑)。 - Merlyn Morgan-Graham
4个回答

6

您可以处理Button控件的Click事件(事实上,您可以使用以下代码处理所有事件),因为Metro的HyperLink按钮仅继承ButtonBase类而没有任何特殊属性或事件,例如NavigateUri。

如果您想在Metro应用中导航到另一页,请在.xaml页面中添加一个frame,并将此代码放入按钮的事件处理程序中:

this.Frame.Navigate("VideoStoryCreator.ComposePage");


如果你正在使用js,那么将WinJS.Navigation.navigate用于导航。 - sebagomez
使用WinJS.Navigation.navigate无法像其他HTML页面一样导航到其他页面,您能详细说明一下吗? - Akil Pandu

5

导航到另一个页面的方法有两种 -

  • 客户端应用程序方式 ->

您将在单击事件中实现此方法 -

var page = new PageName();
Window.Current.Content = page;

  • 类似于Silverlight导航

如果您正在使用Frame/Page Navigation,那么可以按照以下方式进行操作 -

创建一个带有 元素声明的shell页面(主页面)。然后,不要使用create创建新页面。最简单的方法是将UserControl替换为Page。

这在本教程中得到了很好的解释 - http://www.markermetro.com/2011/11/technical/windows-8-metro-style-apps-implementing-navigation-with-xaml/

希望能对您有所帮助!

祝好, Bhavik


1
这是一个描述类似于母版页导航的好答案。你发的链接非常有帮助。所有在Metro模板中展示的类似废话的导航都应该被禁止(请参见msdn上的AppBar示例)。谢谢! - dzendras

3
上处理“Click”事件,然后在您的帧上调用Navigate方法。

-1

只需要在您的点击事件中键入以下代码

this->Frame->Navigate(TargetPageName::typeid,this);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接