理解WPF框架Prism v6.x--命名空间Prism.MVVM

Github:https://github.com/PrismLibrary/Prism

Prism是C#编写的集依赖注入、XAML界面开发等功能的框架,最早用于WPF,现在可用于UWP、XForm.

Prism.MVVM命名空间,包括以下:

    1.Project Prism:各平台共用的核心库

  • BindableBase抽象类:实现了INotifyPropertyChanged的抽象类,ViewModel、Model类继承该类即可通过调用SetProperty<T>()实现数据绑定,重载方法可传入泛型委托Action实例来实现OnChanged回调,使用在MVVM模式下,ViewModel、Model使用该方法:
using Prism.MVVM;

public class SomeViewModel:BindableBase{
       private string message = "Message to Binding";
        public string Message
        {
            get { return message ; }
            set { SetProperty(ref message , value); }
        }
}
  • ViewModelLocationProvider静态类,用于注册关联VM和V,为View提供ViewModel对象,根据UI XAMl依赖属性AutoWireViewModel=true,创造ViewModel的顺序为:
    • 当将ViewModel类与View类注册过,则返回 _factories[viewKey],一个能创造ViewModel对象的Func委托;_factories是一个Dictionary<string, Func<object>>对象;
    • 没注册过则按照惯例来创建并关联:寻找与View名称匹配的ViewModel,两者需均在各自xxxProject.Views及ViewModels子命名空间下,且ViewModel类名为View类名+Model/ViewModel(如View类名不以xxxView结束);
    • 调用传入的委托对象来绑定View、ViewModel;

        该类提供了2种方法来注册根据View类型的ViewModel工厂委托对象:

public static void Register<T>(Func<object> factory)
public static void Register(string viewTypeName, Func<object> factory)

        该类提供了2种方法来注册View、ViewModel:

public static void Register<V, VM>()
public static void Register(string viewTypeName, Type viewModelType)

    2.Project Prism.Wpf:Wpf平台库

  • ViewModelLocator静态类:注册附加属性AutoWireViewModel,调用ViewModelLocationProvider.AutoWireViewModelChanged(d, Bind),传入委托方法Bind()来设置VM为View.DataContext;

 

转载于:https://my.oschina.net/u/2260754/blog/1573915

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值