Prism 源码解读2-View的加载和控制

先容

上一篇先容了Region,这一篇跟Region息息相关,讲一下Region中View的加载方式及控制。

4、ViewDiscovery

在建立好Region后需要将View添加到Region中。先弥补几个观点

在上一篇将了若何建立Region,现在让我们看看Region类是什么

Prism 源码解读2-View的加载和控制

  • private ViewsCollection views;
  • private ViewsCollection activeViews;

Prism 源码解读2-View的加载和控制

这是一个View聚集,聚集改变会触发CollectionChanged事宜

Prism 源码解读2-View的加载和控制

其完全依赖ObservableCollection工具

Prism 源码解读2-View的加载和控制

  • this.Behaviors = (IRegionBehaviorCollection) new RegionBehaviorCollection((IRegion) this);

Prism 源码解读2-View的加载和控制

这是一个行为聚集,每当添加举行为的时刻,会自动挪用Attach()

Prism 源码解读2-View的加载和控制

  • PropertyChanged事宜,每当Context,Name, RegionManager,会触发该事宜

下面来看一个好玩的行为AutoPopulateRegionBehavior

Prism 源码解读2-View的加载和控制

可以看到这个行为对RegionViewRegistry有依赖,这个是通过组织注入的方式注入的。

Prism 源码解读2-View的加载和控制

该RegionViewRegistry保存着所有的View,是名副实在的Registry.

Prism 源码解读2-View的加载和控制

该Registry有一个事宜ContentRegistered,

Prism 源码解读2-View的加载和控制

每当挪用这个方式的时刻就会触发这个事宜。

不能跑偏了,回到AutoPopulateRegionBehavior

Prism 源码解读2-View的加载和控制

在行为Attach的时刻,已经对RegionViewRegistry举行了订阅。

Prism 源码解读2-View的加载和控制

Prism 源码解读2-View的加载和控制

看看this.Region.Add()

Prism 源码解读2-View的加载和控制

Prism 源码解读2-View的加载和控制

Prism 源码解读2-View的加载和控制

这个ItemMetadataCollection的改变会影响Views和ActiveViews

Prism 源码解读2-View的加载和控制

Java BIO、NIO与AIO的先容(学习历程)

首先它是一个ObservableCollection,

Prism 源码解读2-View的加载和控制

Prism 源码解读2-View的加载和控制

其次ViewCollection就是依赖ItemMetadataCollection建立的,以是改变自然会影响ViewCollection

那这个VIewCollection是怎么来影响界面的呢,这就要看看另一个行为RegionActiveAwareBehavior

Prism 源码解读2-View的加载和控制

Prism 源码解读2-View的加载和控制

Prism 源码解读2-View的加载和控制

Prism 源码解读2-View的加载和控制

Prism 源码解读2-View的加载和控制

至此可能会一头雾水,这讲了什么啊,一会是Region,一会是Behavior,到底想说什么啊?实在就是讲了View是若何被自动注入到对应的Region。

下面让我们随着Samples中的ViewDiscovery并连系刚刚讲的源码梳理一下。

  • 在程序最先的时刻向行为工厂中注入了响应的行为

Prism 源码解读2-View的加载和控制

  • 在建立Region的时刻RegionAdapter向其添加了所有的行为

Prism 源码解读2-View的加载和控制

  • 现在只需挪用RegionManager.RegisterViewWithRegion方式就可以自动向Region中添加VIew并显现出来

Prism 源码解读2-View的加载和控制

Prism 源码解读2-View的加载和控制

可以看到就是挪用RegionViewRegistry中Register’VIew’With’Region方式

  • 下面就等着AutoPopulateRegionBehavior和RegionActiveAwareBehavior根据上面的方式事情就可以了。

可以看出为什么Region有这么壮大的功效就是由于Prism给Region提供了许多的行为,行为作为WPF的一个特征,其作用是异常壮大的。后面的View生命周期治理也是通过行为来完成的

5、ViewInjection

View手动加载到Region,通过一个点击事宜,通过RegionManager的Regions属性添加View

Prism 源码解读2-View的加载和控制

这个就更简朴了,由于没有走RegionVIewRegistry,而是直接通过Region添加View,会直接添加到对应的RegionView上,然后通过RegionActiveAwareBehavior显示,上面有就不再详尽叙述了。

6、ViewActivationDeactivation

激活或停用View

这个也不多BB直接看怎么挪用

Prism 源码解读2-View的加载和控制

首先先用手动的方式向Region中添加两个View

Prism 源码解读2-View的加载和控制

就是两个方式Activate和Deactivate

Prism 源码解读2-View的加载和控制

这实现也太巧妙了吧,通过ItemMetadata直接影响了View和ActiveView,然后通过RegionActiveAwareBehavior行为实现。真帅

Prism 源码解读2-View的加载和控制

就不再叙述了。

总结

本章主要讲了View的加载方式,可以手动加载,可以自动加载,并可以控制View的Activate和DeActivate。其主要实现都是依赖行为,也从侧面反映出行为的壮大,行为能做的事情实在太多了。下一章会对Modules的实现举行先容。

原创文章,作者:28x29新闻网,如若转载,请注明出处:https://www.28x29.com/archives/3234.html