【问题标题】:Is there a concept of a master page (like in asp.net) for WPF?WPF 是否有母版页的概念(如在 asp.net 中)?
【发布时间】:2011-03-18 23:17:20
【问题描述】:

我已经启动了一个 WPF(基于 Web)的应用程序,它有多个页面。我想在 WPF 中实现母版页的概念,这样当我对一个页面的设计/布局进行更改时,其他所有页面都将效仿,而无需进行所有复制和粘贴。

【问题讨论】:

    标签: asp.net wpf xbap master-pages


    【解决方案1】:

    我认为母版页的概念在 WPF 中基本上是无效的,因为没有页面。 WPF 中存在样式、模板和数据模板。不仅如此,使用 DockPanel 和其他容器可以实现 ASP.NET Master Pages 提供的大部分功能。

    无论如何,如果您仍然需要母版页,我建议查看这篇文章: http://www.codeproject.com/KB/WPF/WPFMasterPageControl.aspx

    HTH

    【讨论】:

      【解决方案2】:

      WPF Magellan Framework (open source) have Master pages(以及其他几个有趣的概念)

      【讨论】:

        【解决方案3】:

        使用主视图并将 ContentControl 与主视图放在一起,然后将 Content 属性绑定到数据上下文中的属性,并将该属性设置为 UserControl 的实例,然后该实例将填充内容部分。

        稍后我会提供更多细节

        【讨论】:

          【解决方案4】:

          您可以使用全局样式在您的应用中应用一致的外观。至于母版页的功能。查看 MVVM 模式。微软有一个实现,但还有其他的。

          它让您在 xaml 中定义一个 shell,并指定在 ASP.NET 中的行为类似于内容占位符的区域。然后,您编写加载到 shell 中这些区域的用户控件。不过,这比在 ASP.NET 中使用母版页要复杂得多。但就屏幕布局而言,概念上相似。

          与往常一样,开始了解概览并不是一个糟糕的地方 http://en.wikipedia.org/wiki/MVVM

          MSDN 上还有很多东西等等。

          【讨论】:

            【解决方案5】:

            您可以使用 Prism 开源框架(可从:patterns & practices: Prism 下载)并使用它创建一个 Shell Window,它可以用作您的WPF 项目的MainWindow。然后,在您的 Shell 窗口中,您可以创建 Regions 并将您的视图注入这些区域。

            以下是 MSDN 对 Shell 的评价(参见:Composing the User Interface using Prism):

            shell 是包含主要 UI 内容的应用程序根对象。在 Windows Presentation Foundation (WPF) 应用程序中,外壳是 Window 对象。在 Silverlight 应用程序中,外壳是 RootVisualUserControl。 Shell 扮演母版页的角色,为应用程序提供布局结构。 shell 包含一个或多个命名区域,模块可以在其中指定将出现的视图。它还可以定义某些顶级 UI 元素,例如背景、主菜单和工具栏。 shell 定义了应用程序的整体外观。它可能定义在 shell 布局本身中存在和可见的样式和边框,它还可能定义将应用于插入到 shell 中的视图的样式、模板和主题。 通常,shell 是 WPF 应用程序项目或主要 Silverlight 项目的一部分。包含 shell 的程序集可能会也可能不会引用包含要在 shell 区域中加载的视图的程序集。

            带有 WPF 的基本 Prism Shell 结构:

            【讨论】:

              猜你喜欢
              • 2013-05-16
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2010-09-19
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多