2009-06-08 81 views
2

我目前正在加载默认文件page.xaml,但在该页面中,我从另一个xaml文件加载内容。随着每个“页面”的变化,我只是从不同的xaml文件加载内容,并且继续。如何在Silverlight应用程序的“页面”之间切换?

例如:this.Content = new StartPage();

但是,我遇到了一些语法问题,因为我改变我的内容的方式,并想知道如何做到这一点的确定性答案?

例如,试图捕捉用户的击键时,我通常会做:

this.Keydown + =新KeyEventHandler(this_KeyDown);

但事件处理程序甚至不会在我的情况下触发。所以,我在寻找新的方法来处理我的内容切换方法,然后再次访问按键问题。

+0

你可能会考虑为Keydown问题创建一个单独的问题 - 它似乎与导航无关。 – 2009-06-08 21:03:36

回答

0

就内容切换而言,我总是完成你在这个问题中提出的建议。通常我创建一个MainPage.xaml,它具有应用程序的框架(通常是我的Grid)。网格中的其中一个单元格被视为应用程序的内容区域。当用户采取我认为是导航的操作时,我创建了一个页面的新实例,对我来说这是一个像MyUserControl.xaml这样的文件,然后将其添加到网格中相应的内容单元格中。 MainPage停留在应用程序的整个生命周期并辅助导航。

如果您想要更有趣的产品,并想利用基于浏览器的后退/前进按钮,可以像Correl建议的那样查看SL3导航。

0

你正在做的一件大事就是,当你通过创建框架元素并将其插入到代码隐藏中来替换框架元素时,日志不会自动发生。这意味着你失去了浏览器的后退和前进功能。当你换出页面时,你可以手动记录东西,但这只是一个破解,让你的导航方式工作。

看看www.compositewpf.codeplex.com/上的Prism,特别是GUI设计的MVVM方法,它会为您节省很多时间。并且记住,当你看MVVM时,你不需要硬核,如果你是一个单人乐队,你总是可以剪掉许多“动态”功能。

也交换到silverlight 3并使用导航应用程序。如果你不能,看看helix 0.3,它会提供一个更加面向asp的导航方法。该链接提供了一个非常好的起点,它是一个三部分的文章,我建议你阅读所有三篇文章并下载示例应用程序并理解它。

一本书可能已经写在你的问题上了,现在已经足够了。

相关问题