一、简单的记录一下,C#是如何使用路由事件的。
1、声明一个事件
public class tableChangedEvent : CompositePresentationEvent
{
}
2、声明一下事件工具类获取程序运行时的全局事件
public class Helper{
static IUnityContainer _container;
///
/// 返回根容器实例
///
public static IUnityContainer Container
{
get
{
if (_container == null)
_container = new UnityContainer();
return _container;
}
}
static IEventAggregator _eventAggregator;
///
/// 获取全局的事件。
///
///
///
public static T GetEvent() where T : EventBase, new()
{
if (_eventAggregator == null)
{
if (RuntimeParameters.ThreadMode == ThreadRunMode.Desktop) //获取线程模式是否是运行时,是的话通过上面的容器去创建IEventAggregator
_eventAggregator = Container.Resolve();
else
_eventAggregator = new EventAggregator();
}
using (Log log = Log.Create(string.Format("GetEvent:{0}", typeof(T).Name)))
{
}
return _eventAggregator.GetEvent();
}
}
3、注册触发路由的方法
Helper.GetEvent().Subscribe(OntableEventEvent); //通过CompositePresentationEvent.Subscribe 注册相应的方法 可注册多个
4、声明在事件中调用的方法
private void OntableEventEvent(T){
// todo
}
5、触发事件的调用
Helper.GetEvent().Publish(T); //告知T属性变更 触发上面
Subscribe()注册的各个方法进行相关的交互 *** 作
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)