【问题标题】:Navigation menu for a standalone WPF application独立 WPF 应用程序的导航菜单
【发布时间】:2010-08-03 18:23:17
【问题描述】:

我刚开始使用 wpf(在 blend 4 中),我想创建一个具有用于更改内容的侧菜单的应用程序。我正在寻找的是文件菜单下的 word 2010 中的内容。如果您单击左侧的菜单,右侧的内容会相应更改。我已阅读有关将 page.xaml 嵌套到框架中并将框架导航源更改为每个页面的文章。这是正确的吗?当我这样做时,导航栏会出现在顶部。我可以轻松摆脱这种情况,但似乎我在想要实现的目标上走错了路。

提前致谢。

【问题讨论】:

  • 您可以通过在页面的 XAML 中执行 ShowsNavigationUI="False" 来摆脱导航栏。不过,我确实相信您选择了错误的项目类型 - 如果您正在处理页面,那么您就在 WPF browser 应用程序中。通常,我将独立与 Windows 应用程序(WPF 应用程序项目类型)相关联。
  • 我正在使用 wpf 应用程序。我在 vb 表单中的做法是隐藏/显示表单。因此,要将“页面”从说报告更改为概览,我只需隐藏报告控制并显示概览控件。现在我试图在这里做同样的事情,一个按钮改变了主窗口的一部分。

标签: c# wpf


【解决方案1】:

顺便说一句,TabControl 和基于Frame 的解决方案有点像极端情况。选项卡控件在选项卡状态和显示的 UI 之间实现了非常紧密的耦合(例如,您可能会发现很难更改为没有显式选项卡项的对话框),而框架可以实现相对松散的耦合,但可能对于这种情况来说太过分了,因为它旨在支持带有历史/页面堆栈的完整线性导航。 (例如,Prism 通过其“区域”概念提供了类似的机制。)

中间立场可能是拥有一个带有占位符元素的主“窗口框架”UI,并让您的个人“页面”派生自 UserControl,使它们成为常规 UI 元素。要切换到 UI 中的特定页面,您将(通过代码或 XAML 资源)实例化相应的用户控件,并将其设置为上述占位符元素的 Content 属性。 (这与您在 VB 中提到的机制基本相同,您可以在其中隐藏/显示子表单。)

因此,有一系列选项可供选择,具体取决于您的场景的实际限制。

【讨论】:

    【解决方案2】:

    最简单的代码是用TabStripPlacement="Left" 创建一个TabControl。例如:

            <TabControl TabStripPlacement="Left">
                <TabItem Header="Tab1" />
                <TabItem Header="Tab2" />
                <TabItem Header="Tab3" />
            </TabControl>
    

    您可以申请Styles 以进一步更改UI、颜色和外观。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-10-14
      • 1970-01-01
      • 1970-01-01
      • 2012-01-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-30
      相关资源
      最近更新 更多