`
clingingboy
  • 浏览: 26939 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
最近访客 更多访客>>
社区版块
存档分类
最新评论

Prism V2之旅(1)

    博客分类:
  • WPF
阅读更多

概述

    如果你在开发wpf程序,应该听说过The Composite Application Guidance for WPF(以下简称prism)

    总而言之,prism是帮助你开发复杂的wpf应用程序的。希望在看完此系列教程以后能对你有所帮助.

    从去年正式版发布至今,将近快半年了.silverlight 2正版的推出.prism也开始支持silverlight,而且这次是同时支持wpf和silverlight.这样便统一了wpf和silverlight的编程,代码的移植也更加的方便.现在prism最新的版本是Prism V2 - Drop 8.相对于第一个版本发生了一些变化.本文则基于Prism V2 - Drop 8这个版本进行介绍.如果你还在用7月份的那个版本可以看周银辉写的教程.

以下说明三个最基础的概念.

 

一.被引导的Windows窗体Shell

 

wpf程序在启动时,需要一个宿主容器,一般情况下是System.Windows.Window,以下是一个刚创建的窗体.

<Window x:Class="HelloWorldSample.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="Window1" Height="300" Width="300">
    <Grid>
        
    </Grid>
</Window>

 

默认情况下,System.Windows.Application会通过设置StartupUri来运行主窗体.

<Application x:Class="HelloWorldSample.App"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    StartupUri="Window1.xaml">
</Application>

 

接着随着prism框架的加入,运行主窗体的方式改变了.因为prism要在窗体运行之前做一堆事情,来为框架可以做的事情做铺垫.所以我们要去掉StartupUri,手动启动窗体. prism通过一个名为Bootstrapper类作为引导程序,这里我们先不管他做了什么,只知道他起了程序的引导作用.

通过Bootstrapper的引导,这个窗体就不再仅仅是一个单纯的窗体了,这个窗体我们也可以称为Shell,也可以理解为一个壳的意思.

二.被附加的内容区域Region

 

以asp.net中的母版页为例.

我们做网站之前总要先布局,那就得定模板,下图大家应该很熟悉,目的就是以母版页当容器,然后在定义的ContentPlaceHolder区域中塞内容.

image

一般情况下,定义了母版页以后,必定要其他Page来套用此母版页

image

 

 

这种做法本身很好,用wpf程序来实现也可以实现(可以参考此文),但比较麻烦.web程序与客户端程序有一个本质的区别,web是无状态的,客户端程序就没有这方面的问题.

假设web是有状态的(假设哦),可以以用户控件替代,以aspx页面为母版页,照样定义容器,往里面塞用户控件.

这种做法,现在的ajax程序应该很流行.

image

 

回到主题,prism框架通过附加属性的方式给Shell定义自定义区域,标题说是附加的内容区域,如下代码,

通过附加属性的方式给ItemsControl定义了一个Region,ItemsControl就变成这个Region的容器了.

这里的Region与asp.net母版页的ContentPlaceHolder的意义是相同的,只不过实现方式不同罢了.

<Window x:Class="HelloWorldSample.Shell"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:cal="http://www.codeplex.com/CompositeWPF"
    Title="Composite Application Library Sample" Width="400" Height="300">
    <ItemsControl cal:RegionManager.RegionName="MainRegion"/>
</Window>

 

注意:在这里通过RegionManager附加属性RegionName注册的区域的功能,是在该窗体实例化之前,通过Bootstrapper提供的,这就是上面的铺垫作用.

三.被拆分的模块Module

     定义好Region内容区域以后,可以在Region中加载不同的模块的用户控件.每个模块都有着不同功能,一个功能强大的应用程序就是由不同的模块组成的.将应用程序的不同功能,拆分成不同的小模块开发,复杂度明显就会降低.

好,到了这里讲明了三个点

1.Shell,主应用程序容器,prism功能的基石

2.Region,我们且称之为内容区域,可以提供各个模块加载所需的视图(即用户控件)

3.Module,程序的组成模块.

 

有了以上三个概念以后,我们便可以开始prism之旅了,如果你对以上概念还不是很清晰,没有关系。以后会慢慢介绍.已经在用此框架的朋友,发现写错了请指出.下篇让我们一起来探索Region的使用。

分享到:
评论

相关推荐

    Prism经典案例,Prism经典应用

    1. **模块化(Modularity)**:Prism的核心特性之一是模块化,它允许将大型应用程序分解为小的、独立的模块,每个模块都有自己的功能。这样可以提高代码的可重用性,使得开发和维护变得更加容易。在示例中,你可能会...

    Prism Manual.pdf Prism8框架官方手册 MD 文件转pdf

    Prism是一个流行的框架,它可以帮助开发者构建适用于.NET平台的模块化应用程序。本手册介绍的是Prism框架的官方指南,并说明了如何将Markdown文件转换成PDF格式。Prism框架主要针对WPF(Windows Presentation ...

    WPF Prism实例(多个实例包含Prism各个重要概念实例)

    1. **模块化(Modularity)**:Prism提供了一种组织大型应用为多个独立模块的方法,每个模块可以有自己的功能和依赖,便于维护和扩展。 2. **依赖注入(Dependency Injection,DI)**:通过容器如Unity或Autofac,...

    C#Prism 例子与源码

    Prism 的核心特性之一是模块化。模块化允许将大型应用程序分解为小的、独立的功能单元,每个单元称为模块。这样可以分别开发、测试和部署这些模块,提高代码的复用性和可维护性。文件名 "Prism-7.2.0.1422" 可能包含...

    prism模板 vs插件

    prism模板 vs插件

    Prism.Maui-master.zip

    1. **MVVM 模式**:Prism 提倡 Model-View-ViewModel (MVVM) 设计模式,这是一种将业务逻辑与用户界面分离的方法,有助于提高代码的可测试性和可维护性。MVVM 包括三个主要组件:模型(Model)负责数据处理,视图...

    Prism 4.0安装包

    1. 模块化:Prism提供了模块化功能,允许开发者将大型应用分解为独立的、可独立开发和部署的模块,增强了软件的灵活性和可扩展性。 2. 依赖注入(Dependency Injection, DI):Prism支持多种DI容器,如Unity或Mef,...

    Delphi Prism Xe Crack

    1. Install Delphi Prism Xe with key:MAAF-SPD7DK-BLAGAD-FEBN 2. Copy PrismXe.slip to C:\Program Files\Embarcadero\Delphi Prism\License 3. Copy sanctuarylib.dll to C:\Program Files\Embarcadero\Delphi ...

    C#+WPF+Prism模块化开发示例

    **C# WPF Prism模块化开发示例** 在软件开发中,C#、WPF(Windows Presentation Foundation)和Prism框架结合使用,可以构建出高效、可维护且可扩展的桌面应用程序。本示例旨在介绍如何利用Prism进行模块化的WPF...

    Graphpad-Prism5中文教程

    GraphPad Prism 5.0 中文教程 GraphPad Prism 5.0 是一个功能强大的数据分析和图形化工具,它可以帮助用户快速、准确地处理和可视化数据。在本教程中,我们将详细介绍 GraphPad Prism 5.0 的使用方法和技巧,从...

    GraphPad Prism 5.0 usb免安装版

    GraphPad Prism 是一个包括基础生命统计、曲线匹配和科学作图的强大结合体。在一百多个国家有超过 10 万个科学家正在试用 Prism 来分析、绘图和呈现他们的科学数据。 是什么令许多世界上领先的大学、医学中心、研究...

    delphi Prism 2010 序列号(完全可用)

    1. **跨平台支持**:Delphi Prism 2010支持开发Windows、Linux和Mac OS X平台的应用程序。 2. **代码重用**:通过共享业务逻辑层,开发者可以在多个平台上重用代码,从而提高开发效率。 3. **集成开发环境(IDE)**...

    WPF PRISM 5.0源码

    WPF PRISM5.0框架源代码,适合WPF初学者或者有一定开发经验的C#程序员,包含:Microsoft.Practices.Prism、Microsoft.Practices.Prism.MefExtensions、 Microsoft.Practices.ServiceLocation

    WPF Prism 可关闭的TabControl

    在本文中,我们将深入探讨如何在WPF应用中利用Prism框架实现一个可关闭的TabControl。WPF(Windows Presentation Foundation)是.NET Framework的一部分,提供了一种强大的方式来构建丰富的、具有图形用户界面的应用...

    Prism7.1.0.431_WPF_官方中文文档

    1. **模块化**:Prism提供了一种将大型应用分解为多个独立模块的方法,每个模块都可以单独开发、测试和部署。这有利于代码复用和后期维护。 2. **MVVM(Model-View-ViewModel)模式**:Prism支持MVVM设计模式,鼓励...

    Prism7.1.0.431_WPF_官方中文文档.pdf

    模块化应用程序开发是Prism的核心优势之一,文档第四部分专注于此。构建模块化应用程序的好处被一一阐述,例如,它能提供更好的维护性、可扩展性和可测试性。文档详细讨论了IModule接口,该接口是模块化应用程序的...

    Prism Central 指南v5.5.pdf

    Prism Central 是 Nutanix 企业云平台的一部分,它提供了一个集中管理界面,使得IT管理员可以轻松地跨多个Nutanix集群进行管理和监控。在本指南中,我们将详细探讨Prism Central的多个功能和特性,以及如何在Nutanix...

    Prism7.1.0.431_WPF_官方中文文档.docx

    **1. WPF Prism 库简介** Prism 是一个开源框架,专为设计和构建Windows Presentation Foundation (WPF) 应用程序而设计,旨在简化开发过程并提高代码的可维护性和可扩展性。该框架提供了许多最佳实践和设计模式,...

    基于Prism框架的MVVM设计模式的WPF实例代码

    - **Module**: 在Prism中,模块化是其核心特性之一,允许开发者将应用程序划分为独立的模块,每个模块可以单独开发、测试和部署。在本示例中,可能包含有多个模块,每个模块负责特定的功能或业务领域。 - **...

    Prism写的客户端框架demo

    1. **模块化**:Prism支持将大型应用程序分解为多个独立的模块,每个模块都可以有自己的功能和业务逻辑。这使得开发、测试和更新变得更加容易,因为可以单独处理每个模块。 2. **依赖注入(Dependency Injection, DI...

Global site tag (gtag.js) - Google Analytics