【问题标题】:How to design a wpf Application with more than 500 pages如何设计一个超过 500 页的 wpf 应用程序
【发布时间】:2012-03-03 08:33:44
【问题描述】:

我有一个应用程序(一种医学疗法),其中有 500 多个页面可供浏览,并且在某些页面中完成了一些处理。我应该如何设计这样的应用程序。

目前我有一个主窗口,其中有一个框架,在框架内我嵌入了这些页面,但是对于每个页面,我必须创建那么多 xaml 页面(我觉得创建如此大量的 xaml 很笨重页)。

谁能提出更好的设计或方法。

【问题讨论】:

  • 数据的格式是什么?部分页面做了哪些处理?

标签: wpf architecture navigation


【解决方案1】:

有专门为此类大型复合应用程序设计的框架。

框架是 PRISM 4,见:http://compositewpf.codeplex.com/

Prism 提供的指导旨在帮助您更轻松地设计和 构建丰富、灵活且易于维护的 Windows 演示文稿 Foundation (WPF) 桌面应用程序、Silverlight Rich Internet 应用程序 (RIA) 和 Windows Phone 7 应用程序。使用设计 体现重要架构设计原则的模式,例如 作为关注点分离和松耦合,Prism 可以帮助您 使用松散耦合的组件设计和构建应用程序 可以独立发展,但可以轻松无缝地发展 集成到整个应用程序中。这些类型的应用程序 被称为复合应用程序。

【讨论】:

    【解决方案2】:

    听起来好像应用程序主要是一个文档查看器。如果这是真的,那么文档可以存储在某种标记中,并带有某种特殊触发器,用于包括处理的活动内容。

    当显示页面时,应用程序将处理标记并将其转换为 WPF 显示格式,当检测到主动处理要求时,程序可以插入专门的用户控件或使用其他一些系统与页面交互。

    【讨论】:

      【解决方案3】:

      从@Doug 获得提示,您似乎正在寻找文档查看器。在这种情况下,我认为您真正想要的只是一个“虚拟化文档”,其中只有当前呈现的页面被实例化(有点类似于 ListBox 使用的虚拟化堆栈面板)。

      近年来,我成为了 MVVM 设计模式的忠实粉丝。在你的情况下,我认为在你的视图模型中你应该有一个 currentPage 属性(一个子视图模型)和一个知道如何使用绑定呈现这个页面的视图(即 XAML)——可能是一个数据模板。

      当您在页面之间移动时,您只需更改 ViewModel 中的 currentPage 属性。一切都应该自动更新(一旦 INotifyPropertyChanged 正确实施)。如果渲染 View 太慢,可以考虑添加缓存机制。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2010-12-10
        • 1970-01-01
        • 1970-01-01
        • 2010-11-02
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多