我目前正在加载默认文件page.xaml,但在该页面中,我正在从另一个xaml文件加载内容。随着每个“页面”的更改,我只是从不同的xaml文件加载内容,然后开启。
示例:this.Content = new StartPage();
我遇到了一些语法问题,但是,由于我改变内容的方式,并且想知道是否有关于如何实现这一目标的明确答案?
例如,在尝试捕获用户的击键时,我通常会这样做:
this.Keydown + = new KeyEventHandler(this_KeyDown);
但该事件处理程序甚至不会在我的情况下触发。所以,在重新审视击键问题之前,我正在寻找一种新的内容切换方法。
答案 0 :(得分:1)
您是否看过使用Silverlight 3.它具有新的页面导航功能。Silverlight 3 Navigation
答案 1 :(得分:0)
就内容转换而言,我总是在问题中完成您的建议。通常我创建一个MainPage.xaml,它有应用程序的框架(对我来说通常是一个Grid)。网格中的一个单元格被视为应用程序的内容区域。当用户采取我认为是导航的操作时,我创建了一个新的Page实例,对我来说就像MyUserControl.xaml这样的文件,然后将其添加到Grid中的相应内容单元格中。 MainPage在应用程序的生命周期中保持不变并协助导航。
如果你想要更高级的东西,并希望利用基于浏览器的后退/前进按钮,你可以像Correl建议的那样研究SL3导航。
答案 2 :(得分:0)
您正在做的一个大问题是,当您通过创建框架元素并在代码隐藏中插入框架元素来交换框架元素时,日志化不会自动发生。这意味着您将丢失浏览器的后退和前进功能。您可以在换出页面时手动记录内容,但这只是让您的导航方法有效的黑客攻击。
在www.compositewpf.codeplex.com/上查看Prism,特别是GUI设计的MVVM方法,它将为您节省大量时间。请记住,当你看MVVM时,你不需要去硬核,如果你是一个单人乐队,你可以随时削减很多“动态”功能
还要换成silverlight 3并使用导航应用程序。如果你不能,看看helix 0.3,它将提供更加面向asp的导航方法。这个链接提供了一个非常好的起点,它是一篇由三部分组成的文章,我建议你阅读这三篇文章并下载示例应用程序并理解它。
本书可以写在你的问题上,现在已经足够了。