【问题标题】:A better way to show different wpf pages in mainWindow?在 mainWindow 中显示不同 wpf 页面的更好方法?
【发布时间】:2010-12-14 11:35:32
【问题描述】:

我的项目中有几个 Wpf 页面,这些页面有不同的表单和 ui 控件独立主题。下图显示了主窗口,有两个按钮。 当我使用突出显示的 Frame 控件单击 + 或 Edit 按钮时,我想显示特定页面。

显然这锅:

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

但它有IE导航声音,进入page2后出现工具栏。 有没有更好的方法来显示不同的页面而不是使用框架?

【问题讨论】:

    标签: wpf user-interface


    【解决方案1】:

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

    【讨论】:

    • YoteXP 给出解决方案
    【解决方案2】:

    Frame 控件的用途是允许导航。如果您不想要导航,请不要使用Frame。您可以关闭导航工具栏,但这并不会真正禁用导航 - 有鼠标按钮和键盘快捷键可用于向后导航。

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

    【讨论】:

    • 我收到此错误:“页面只能有窗口或框架作为父级。”
    • 我认为 YotaXP 的回答解决了您在评论中提出的问题?
    • 不太清楚为什么有人不赞成这个。 (在我写这篇文章时它有一个+1和一个-1。)我写的是正确的,@Alexandergre 作为回应提出的问题完全被 YotaXP 的建议解决了。所以这里的解决方案是我所说的(不要把它放在框架中)和@YotaXP 所说的(不要让它成为页面)的组合。如果投票给我的人看到我的回复,您能否添加评论,说明您认为我的回答有什么问题?
    【解决方案3】:

    我能够将框架控件的 NavigationUIVisibility 设置为隐藏。这为我解决了这个问题。我使用的是 Visual Studio 2010,所以它可能不适用于旧 VS 版本。

    【讨论】:

      【解决方案4】:

      Ian Griffiths,您的建议大大增加了开发人员的工作量。而且您正在超越 XAML 的底层范式。

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

      我怀疑您的反对意见是由于您的陈述“如果您不想导航......”。在重新阅读原始海报问题后,我看到他确实想要导航,他只是想要按照自己的条件。我也会投票给你。 YotaXP 的解决方案忽略了使用用户控件的问题,特别是如果它可能包含其他用户控件。看起来 Chris Calvert 在问题的参数范围内想出了一个解决海报问题的实际解决方案。

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

      【讨论】:

      • 有哪些实质性的额外工作?将UserControl 设置为Border 的内容与将Page 设置为Frame 的内容所用的代码量(1 行)完全相同。唯一的区别是使用Frame,您可以获得导航支持。问题是抱怨导航功能。 (我真的不明白你是如何得出他想要导航的结论,特别是考虑到他接受的答案。)请注意,我还指出他可以选择只关闭导航工具栏(Chris Calvert 提供了更多细节) 如果他想要没有按钮的导航。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-06
      相关资源
      最近更新 更多