在mainWindow中显示不同wpf页面的更好方法?

时间:2010-12-14 11:35:33

标签: wpf user-interface

我的项目中有几个Wpf页面,这些页面有不同的形式,ui控制着indide主题。下图显示了mainWindow,有两个按钮。 当我使用突出显示的Frame控件单击+或Edit按钮时,我想显示一个特定的页面。

很明显这个问题:

Page1 me = new Page1(); 
mainFrame.Content = me; 

但它有一个IE导航声音,并在转到page2后出现一个工具栏。 有没有更好的方式来显示不同的页面而不使用框架?

alt text

4 个答案:

答案 0 :(得分:6)

您可能希望将Page转换为UserControl。然后,您可以将该控件放在其他容器中,例如Grid。在导航时你必须手动换出容器中的页面,但看起来你还是这么做。

答案 1 :(得分:1)

Frame控件的目的是允许导航。如果您不想要导航,请不要使用Frame。您可以关闭导航工具栏,但实际上不会禁用导航 - 还有用于导航的鼠标按钮和键盘快捷键。

如果您只想托管没有导航的UI元素,请使用更简单的内容,例如Border元素 - 将内容放在其Child属性中。您可以在运行时多次更改Child

答案 2 :(得分:1)

我能够将帧控件的NavigationUIVisibility设置为Hidden。这解决了我的问题。我使用的是Visual Studio 2010,因此它可能不适用于较旧的VS版本。

答案 3 :(得分:0)

Ian Griffiths,你的建议大大增加了开发人员的工作量。而且你正在走出XAML的基本范式之外。

在我的情况下,我正在开发一个游戏应用程序,并尽可能选择WPF作为UI平台。对我来说,这意味着介绍屏幕,字符选择等.Pages的目的是封装这种应用程序的导航需求。

我怀疑你的downvote是由你的声明“如果你不想导航......”。在重新阅读原始海报问题时,我发现他 想要导航,他只是想按照自己的意愿。我也会投票给你。 YotaXP的解决方案忽略了使用用户控件的问题,特别是如果它可能包含其他用户控件。看起来Chris Calvert在问题的参数范围内提出了海报问题的实际解决方案。

如果我可以覆盖现有的paragimn中的导航热键,但是在它自己的线程中正确的话,我会很好奇。