cab框架扩展UI元素的原理
来源:互联网 发布:linux内核的编译与移植 编辑:程序博客网 时间:2024/04/30 17:59
重要的类:
1.UIElementAdapterFactoryCatalog 负责管理UI元素适配器工厂,主要方法:
1.1RegisterFactory 注册UIElementAdapterFactory
1.2GetFactory 根据UI元素获取相应的适配器工厂,其实现如下:
public IUIElementAdapterFactory GetFactory(object element)
{
foreach (IUIElementAdapterFactory factory in factories)
{
if (factory.Supports(element))
return factory;
}
throw new ArgumentException(String.Format(CultureInfo.CurrentCulture,
Properties.Resources.NoRegisteredUIElementFactory,
element.GetType().ToString()));
}
2.IUIElementAdapterFactory 负责创建UI元素适配器,主要方法:
2.1 IUIElementAdapter GetAdapter(object uiElement) 根据UI元素创建相应的适配器
2.2 bool Supports(object uiElement) 判断该工厂是否可以创建该元素的适配器
3.IUIElementAdapter 负责增删元素
3.1 object Add(object uiElement)
3.2 void Remove(object uiElement);
4.UIExtensionSiteCollection UI扩展站点集合,负责管理UIExtensionSite
4.1 RegisterSite(string siteName, object uiElement) 注册UI站点
public void RegisterSite(string siteName, object uiElement)
{
Guard.ArgumentNotNullOrEmptyString(siteName, "siteName");
Guard.ArgumentNotNull(uiElement, "uiElement");
IUIElementAdapterFactory factory = FactoryCatalog.GetFactory(uiElement);
IUIElementAdapter adapter = factory.GetAdapter(uiElement);
createdAdapters.Add(adapter);
RegisterSite(siteName, adapter);
}
public void RegisterSite(string siteName, IUIElementAdapter adapter)
{
Guard.ArgumentNotNullOrEmptyString(siteName, "siteName");
Guard.ArgumentNotNull(adapter, "adapter");
if (Contains(siteName))
throw new ArgumentException(string.Format(CultureInfo.CurrentCulture,
Properties.Resources.DuplicateUIExtensionSite, siteName), "siteName");
sites.Add(siteName, new UIExtensionSite(adapter));
}
4.2 UIExtensionSite this[string siteName] 根据名称返回UI站点
5.UIExtensionSite 负责利用IUIElementAdapter 增删元素
使用UI元素扩展流程:
1.注册适配器工厂:
rootWorkItem.Services.AddNew<UIElementAdapterFactoryCatalog, IUIElementAdapterFactoryCatalog>();
2.注册UI扩展站点:
RootWorkItem.UIExtensionSites.RegisterSite(UIExtensionConstants.MAINMENU, Shell.MainMenuStrip)
3.在站点上添加元素:
UIExtensionSites[UIExtensionConstants.FILE].Add(queueItem);
- cab框架扩展UI元素的原理
- UI类的扩展
- Composite UI Application Block(Cab)比较详细的一片文章
- Yii框架扩展JInputElement【输入元素组件】
- 一个可扩展的下方是导航条,上方是Fragment的UI框架
- shiro安全框架扩展教程--如何动态控制页面节点元素的权限
- shiro安全框架扩展教程--如何动态控制页面节点元素的权限
- 结构元素的扩展操作
- 结构元素的扩展操作
- Struts2工作原理和框架扩展点
- Struts2工作原理和框架扩展点
- javascript 的 UI 框架
- javascript 的 UI 框架
- UI框架的思考
- 简单的UI框架
- 常见的UI框架
- Android - 主要的UI元素。
- Android - 主要的UI元素
- 浅谈Java的输入输出流(转)
- 串行化技术
- 电脑读取系统碟时常见报错信息及解决方案
- 幻想
- TagLib简介
- cab框架扩展UI元素的原理
- Java正则表达式入门
- (二十)午夜迷情 - 1
- 程序员创业致富历程
- 计算机专业英语词汇
- 计算机专业英语词汇缩写大全(A-I)
- VC开发多语言国际化界面支持的简单方法
- (二十)午夜迷情 - 2
- ext fireEvent