SC.UI
IController
using Microsoft.Practices.Prism.Events;
using Microsoft.Practices.Prism.Regions;
using Microsoft.Practices.Unity; namespace SC.UI
{
public interface IController : ISingletonDependency
{
void SubscribeEvents(); void UnsubscribeEvents(); IUnityContainer UnityContainer { get; set; } IRegionManager RegionManager { get; set; } IEventAggregator EventAggregator { get; set; } void AttachView(IViewModel viewModel); void RemoveView(IViewModel viewModel); void AttachView(string zoneName, IViewModel viewModel); void RemoveView(string zoneName, IViewModel viewModel);
}
}
Controller
using Microsoft.Practices.Prism.Events;
using Microsoft.Practices.Prism.Regions;
using Microsoft.Practices.Unity; namespace SC.UI
{
public abstract class Controller : NotificationObject, IController
{
public Controller(
IRegionManager regionManager,
IEventAggregator eventAggregator,
IUnityContainer unityContainer)
{
RegionManager = regionManager;
EventAggregator = eventAggregator;
UnityContainer = unityContainer;
} public IUnityContainer UnityContainer { get; set; } public IRegionManager RegionManager { get; set; } public IEventAggregator EventAggregator { get; set; } public virtual void SubscribeEvents() { } public virtual void UnsubscribeEvents() { } public void AttachView(IViewModel viewModel)
{
AttachView(RegionNames.MainRegion, viewModel);
} public void AttachView(string regionName, IViewModel viewModel)
{
var zone = RegionManager.Regions[regionName]; if (null != zone && !zone.Views.Contains(viewModel))
{
zone.Add(viewModel);
}
} public void RemoveView(IViewModel viewModel)
{
RemoveView(RegionNames.MainRegion, viewModel);
} public void RemoveView(string regionName, IViewModel viewModel)
{
var region = RegionManager.Regions[regionName]; if (null != region && region.Views.Contains(viewModel))
{
region.Remove(viewModel);
}
}
}
}
ModuleBase
using Microsoft.Practices.Prism.Events;
using Microsoft.Practices.Prism.Modularity;
using Microsoft.Practices.Prism.Regions;
using Microsoft.Practices.Unity; namespace SC.UI
{
public class ModuleBase : IModule
{
protected IUnityContainer UnityContainer { get; private set; }
protected IEventAggregator EventAggregator { get; private set; }
protected IRegionManager RegionManager { get; private set; } public ModuleBase(
IUnityContainer unityContainer,
IEventAggregator eventAggregator,
IRegionManager regionManager)
{
UnityContainer = unityContainer;
EventAggregator = eventAggregator;
RegionManager = regionManager;
} public void Initialize()
{
ConfigureContainer();
InitializeModule();
SubscribeEvents();
} protected virtual void ConfigureContainer() { } protected virtual void InitializeModule() { } protected virtual void SubscribeEvents() { } protected virtual void UnSubscribeEvents() { }
}
}
IViewModel
using System.ComponentModel; namespace SC.UI
{
public interface IViewModel : INotifyPropertyChanged, ISingletonDependency
{ }
}
ViewModelBase
namespace SC.UI
{
public class ViewModelBase : NotificationObject, IViewModel
{
public ViewModelBase()
{ }
}
}
ISingletonDependency
namespace SC.UI
{
public interface ISingletonDependency
{
}
}
http://files.cnblogs.com/files/zisezhixin/SC.UI.zip
SC.UI的更多相关文章
- Spark UI (基于Yarn) 分析与定制
转载自:https://yq.aliyun.com/articles/60194 摘要: 这篇文章的主旨在于让你了解Spark UI体系,并且能够让你有能力对UI进行一些定制化增强.在分析过程中,你也 ...
- Spark源码系列(四)图解作业生命周期
这一章我们探索了Spark作业的运行过程,但是没把整个过程描绘出来,好,跟着我走吧,let you know! 我们先回顾一下这个图,Driver Program是我们写的那个程序,它的核心是Spar ...
- 【Spark Core】任务运行机制和Task源代码浅析1
引言 上一小节<TaskScheduler源代码与任务提交原理浅析2>介绍了Driver側将Stage进行划分.依据Executor闲置情况分发任务,终于通过DriverActor向exe ...
- Spark里面的任务调度:离SparkContext开始
SparkContext这是发达国家Spark入学申请,它负责的相互作用和整个集群,它涉及到创建RDD.accumulators and broadcast variables.理解力Spark架构, ...
- Spark Scheduler模块源码分析之TaskScheduler和SchedulerBackend
本文是Scheduler模块源码分析的第二篇,第一篇Spark Scheduler模块源码分析之DAGScheduler主要分析了DAGScheduler.本文接下来结合Spark-1.6.0的源码继 ...
- Spark技术内幕:Executor分配详解
当用户应用new SparkContext后,集群就会为在Worker上分配executor,那么这个过程是什么呢?本文以Standalone的Cluster为例,详细的阐述这个过程.序列图如下: 1 ...
- Spark技术内幕之任务调度:从SparkContext开始
SparkContext是开发Spark应用的入口,它负责和整个集群的交互,包括创建RDD,accumulators and broadcast variables.理解Spark的架构,需要从这个入 ...
- Spark分析之SparkContext启动过程分析
SparkContext作为整个Spark的入口,不管是spark.sparkstreaming.spark sql都需要首先创建一个SparkContext对象,然后基于这个SparkContext ...
- cocos代码研究(23)Widget子类ScrollView学习笔记
基础理论 一个能够被用户触摸滚动的一个层次型布局容器视图,允许其尺寸大于屏幕显示的物理尺寸,其内部维护有一个布局用于水平的或垂直的存放子节点.继承自 Layout,被 ListView 继承. 代码实 ...
随机推荐
- respond.js
Respond.js,低版本浏览器也能够支持媒体查询 在之前有篇文章也是介绍IE6,7,8支持媒体查询的(查看),Respond.js这个比css3-mediaqueries更为强大一些,它可以支持l ...
- Thinkphp验证码异步验证第二次及以后验证,验证错误----待解决
今天进行差错时遇到的问题.别人的回答----链接(http://www.thinkphp.cn/topic/28968.html) 3.2.3版本里的check方法会在第一次验证正确后清除SESSIO ...
- zju(1)嵌入式开发环境构建
1. 实验目的 搭建嵌入式开发环境,安装ubntu,编译交叉工具链,安装配置tftp,nfs.用makefile 编译几个文件,在实验台上运行. 2. 实验内容 1) 安装ubuntu12.04 2) ...
- Spring的特点
创始人:Rod Johson1.特点: a:方便解耦和,简化开发,提升性能 b:AOP面向切面的编程 c:声明式事务支持 d:方便程序的调式 e:方便集成各大优秀的框架 f:java源代码学习的典范 ...
- 一个xib钟多个Cell
在实际开发中,有时候需要在一个xib钟拖几个cell,注意连线过程的object选择,不然出现没反应的现象. 例如: 在下图中,我在一个xib钟创建了五个cell,他们分别是:收货地址.订单信息.支付 ...
- mysql5.5手册读书日记(4)
<?php /* InnoDB事务模型和锁定 15.2.10.1. InnoDB锁定模式 15.2.10.2. InnoDB和AUTOCOMMIT 15.2.10.3. InnoDB和TRANS ...
- django 动态更新属性值
django 动态更新属性值 class TestTime(models.Model): """ 功能说明:指定测试的每一关总用时 """ ...
- java实现文件及目录压缩
package org.alfresco.repo.bom.util; import java.io.File; import java.io.FileInputStream; import java ...
- PHP->利用GD库新建图像
1.确认php中GD库是否开启 在PHP配置文件php.ini中查找extension=php_gd2.dll,去掉前边的(分号) ';' 即可,一般php是默认开启的 2.绘画步骤 创建一个画布(画 ...
- 《Linux内核分析》第六周 进程的描述与创建
[刘蔚然 原创作品转载请注明出处 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000] WEEK SIX(3 ...