WPF Prism 7.0+ BindableBase(MVVM)
源码下载:PrismCore
Prism框架中包括 MVVM、依赖注入、Command、Message Event、导航、弹窗等功能。
Prism NuGet包
- Prism.Core 核心类
- Prism.Wpf 表现层相关(基于Prism.Core)
- Prism框架提供了两种具体的IOC依赖注入框架,分别是DryIOC和Unity
- Prism.Unity 容器相关(基于Prism.Core、Prism.Wpf)
- Prism.DryIoc 控制反转(基于Prism.Core、Prism.Wpf),容器-->需要什么对象,创建什么对象
- Unity.Microsoft.DependencyInjection 依赖注入
Prism知识章节
- Region(区域管理)
- Module(模块)
- View Injection(视图注入)
- ViewModelLocationProvider(视图模型定位)
- Command(绑定相关)
- Event Aggregator (事件聚合器)
- Navigation(导航)
- Dialog(对话框)
第一步:通过GetNut管理器,导入Prism.Unity 和 Prism.DryIoc

一、使用Prism框架
XAML 代码:
<prism:PrismApplication x:Class="Micro.Ui.PrismCoreStyle.App" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:local="clr-namespace:Micro.Ui.PrismCoreStyle" xmlns:prism="http://prismlibrary.com/"> <Application.Resources> </Application.Resources> </prism:PrismApplication>
注:App.xaml中,删除 StartupUri="MainWindow.xaml",使用Prism启动窗体;
C# 代码:
using Prism.Ioc;
using Prism.DryIoc;
namespace Micro.Ui.PrismCoreStyle
{
public partial class App : PrismApplication
{
// Window窗体, StartupUri可以启动一个窗体
// CreateShell()主要负责启动一个主页面
protected override Window CreateShell()
{
// 启动一个窗体MainWindow
return Container.Resolve<MainWindow>();
}
protected override void RegisterTypes(IContainerRegistry containerRegistry)
{
}
}
}
XAML:
<TextBox Height="28" Width="280" Text="{Binding Name}"/>
二、Prism实现MVVM
1)继承接口:BindableBase
2)数据同步方法:RaisePropertyChanged();
3)创建命令 :DelegateCommand
using Prism.Mvvm;
namespace Micro.Ui.PrismCoreStyle.ViewModels
{
public class MainWindowViewModel : BindableBase
{
/// <summary>
/// 保存命令
/// </summary>
private DelegateCommand<Page>? _saveCommand;
public DelegateCommand<Page> SaveCommand
{
get
{
if (_saveCommand == null)
{
_saveCommand = new DelegateCommand<Page>(new Action<Page>((page) =>
{
}));
}
return _saveCommand;
}
}
/// <summary>
/// Guid
/// </summary>
private string _id = Guid.NewGuid().ToString();
public string Id
{
get { return _id; }
set { SetProperty(ref _id, value); }
}
/// <summary>
/// 名称
/// </summary>
private string _name = string.Empty;
public string Name
{
get { return _name; }
//数据同步方法:RaisePropertyChanged();
set { _name = value; RaisePropertyChanged(); }
}
}
}
三、实现自动绑定ViewModel
必须要满足的条件:
1)窗体|页面|用户控件必须放到Views文件夹下
2)模型必须放到ViewModels文件夹下
3)模型名称的名称,必须是窗体名称开头,且以ViewModel结尾
满足以上三条,不需要手动绑定DataContext,实现自动绑定ViewModel。
另注意:xaml中prism命名空间的设置,自动绑定设置(可省略)
xmlns:prism="http://prismlibrary.com/"
prism:ViewModelLocator.AutoWireViewModel="True"
https://www.cnblogs.com/swbna/p/17538859.html
https://blog.csdn.net/qq_48492162/article/details/131977507

浙公网安备 33010602011771号