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

原创
2017/11/15 14:30
阅读数 1.2K

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;

 

展开阅读全文
加载中

作者的其它热门文章

打赏
0
0 收藏
分享
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部