新星市网站建设_网站建设公司_Linux_seo优化
2026/1/16 18:00:49 网站建设 项目流程

🧭 WPF MVVM入门系列教程

  • 一、MVVM模式介绍
  • 二、依赖属性
  • 三、数据绑定
  • 四、ViewModel
  • 五、命令和用户输入
  • 六、ViewModel案例演示

🍠 WPF MVVM进阶系列教程

  • 一、对话框
  • 二、数据验证
  • 三、使用依赖注入(Dependency Injection)
  • 四、ViewModel通信

⌨️ WPF MVVM实战系列教程

  • 一、Prism框架介绍
  • 二、使用Visual Studio 创建Prism项目
  • 三、创建Bootstrapper/启动器
  • 四、区域导航

区域(Region)

在Prism中,引入了一个新的概念,叫Region(区域)。

Region 可以理解为 WPF 界面上的 “占位容器”,可以把不同的 View(视图)动态加载到这个容器中,无需在 XAML 中硬编码绑定,这是 Prism 实现模块化、松耦合 UI 的关键。

 

image

假设我们定义了两个Region,分别为Region1和Region2。

我们可以动态加载View(视图)到这两个Region里。

 

肯定有小伙伴会问,在WPF中,Frame控件也可以实现导航的功能,

是的,所以这里我们对比一下Frame和Region的区别

对比维度Frame(WPF原生)Region(Prism)
核心定位 页面(Page)导航控件 任意View的动态加载/切换容器
支持的视图类型 仅支持Page类型 支持任意UIElement(UserControl、Grid等)
导航方式 基于XAML文件路径(如frame.Navigate(new Uri("Page1.xaml", UriKind.Relative)) 基于View名称/类型(松耦合,无硬编码路径)
模块化支持 弱,需手动管理页面与模块的关联 强,与Prism Module深度集成,天然支持模块化
生命周期 仅简单的导航事件(Navigated、Navigating) 完整的导航生命周期(INavigationAware接口)
多视图管理 仅支持单页面显示,无多视图激活/切换机制 支持多视图(TabControl/ItemsControl作为Region),可激活/停用指定View
依赖注入 原生不支持,需手动实例化Page并传参 与Prism容器(Unity/DryIoc)深度集成,自动注入ViewModel/服务
参数传递 仅支持简单对象传参(Navigate的object参数) 支持强类型参数(NavigationParameters),可在生命周期中获取
复用性 页面实例默认每次导航重建(可手动缓存) 可通过IsNavigationTarget控制View实例复用

 

 

如何创建Region

1、引入Prism命名空间

1 xmlns:prism="http://prismlibrary.com/"

 

2、增加一个ContentControl

使用RegionManager.RegionName附加属性给区域命名

1 <ContentControl prism:RegionManager.RegionName="ContentRegion" />

 

完整代码如下所示

1 <Window x:Class="Regions.Views.MainWindow"
2         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
3         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
4         xmlns:prism="http://prismlibrary.com/"
5         Title="Shell" Height="350" Width="525">
6     <Grid>
7         <ContentControl prism:RegionManager.RegionName="ContentRegion" />
8     </Grid>
9 </Window>

 

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询