XAF之更丰富的状态栏
来源:互联网 发布:眼睑凹陷填充 知乎 编辑:程序博客网 时间:2024/05/17 02:41
XAF程序默认是有一个状态栏,如图1
图1 XAF默认状态栏
但该状态栏只能显示字符串。若要自定义字符串,需要订阅WindowTemplateController. CustomizeWindowStatusMessages事件。此外,窗体仅提供了Window.Template.SetStatus(ICollection<string>)方法设置字符串,如果要在运行时更改较为麻烦。自定义状态栏字符串的方法参见帮助文档http://documentation.devexpress.com/#Xaf/CustomDocument3253
其实,我们既然可以访问到窗体模版,就可以在代码中(当然也可以在设计器内)创建丰富的状态栏。
1. 新建一个WindowController,订阅Window.TemplateChanged事件,在为Frame设置Template时会触发该事件
protected override void OnActivated() { base.OnActivated(); this.Window.TemplateChanged += this.Window_TemplateChanged; }
2. 在该WindowController内使用Window.Template访问BarManager,利用BarManager就获得了StatusBar的引用,即可以添加自己的状态栏控件了
IBarManagerHolder template = Window.Template as IBarManagerHolder; Bar bar = template.BarManager.StatusBar ;
下图2是一个添加了时间显示BarStaticItem和图片显示PictureEdit的状态栏:
图2 自定义的状态栏
private void Window_TemplateChanged(object sender, EventArgs e) { IBarManagerHolder template = Window.Template as IBarManagerHolder; if (template != null) { if (this.Window.IsMain) { _CurrentDateItem = new BarStaticItem(); _CurrentDateItem.Caption = String.Format("{0} {1}", DateTime.Now.ToLongDateString(), DateTime.Now.ToLongTimeString()); _CurrentDateItem.Alignment = BarItemLinkAlignment.Right; _CurrentDateItem.Name = "Current DateTime"; _CurrentDateItem.MergeOrder = 3; _CurrentDateItem.MergeType = BarMenuMerge.Replace; } pictureItem = new BarEditItem() { CanOpenEdit = false }; RepositoryItemPictureEdit imageEdit = new RepositoryItemPictureEdit(); pictureItem.Edit = imageEdit; imageEdit.AllowFocused = false; imageEdit.Appearance.BackColor = System.Drawing.Color.Transparent; imageEdit.BorderStyle = BorderStyles.NoBorder; pictureItem.Alignment = BarItemLinkAlignment.Right; pictureItem.EditValue = ImageLoader.Instance.GetImageInfo("arrow1").Image; pictureItem.Name = "Company Logo"; pictureItem.MergeOrder = 4; pictureItem.MergeType = BarMenuMerge.Replace; Bar bar = template.BarManager != null ? template.BarManager.StatusBar : null; if (bar != null) { bar.BeginUpdate(); if (this.Window.IsMain) { bar.ItemLinks.Add(_CurrentDateItem, true); } bar.ItemLinks.Add(pictureItem); bar.EndUpdate(); this._Timer.Start(); } }
另外,在调试过程中突然不显示自定义的项目,请删除debug目录下所有文件,再运行就行了。
Window.Template是对主窗体的引用,可以利用它获得一些很重要的对象。如
Window.Template as IBarManagerHolder -------------------获得----------------->BarManager
Window.Template as IDockManagerHolder-------------------获得----------------->DockManager
Window.Template as ISupportMdiContainer-------------------获得----------------->XtraTabbedMdiManager
Window.Template as IWindowTemplate -------------------获得----------------->SetStatus()方法
Window.Template as IDynamicContainersTemplate -------------------获得----------------->RegisterActionContainers, UnregisterActionContaners方法, ActionContainersChanged事件
Window.Template as IViewSiteTemplate -------------------获得----------------->ViewSiteControl
Window.Template as XtraFormTeplateBase-------------------获得----------------->ActionContainersManager
或者直接使用 Window.Template as DevExpress.ExpressApp.Win.CustomTemplates.MainForm获取全部成员
- XAF之更丰富的状态栏
- 更丰富的用户界面
- 更丰富的广泛
- Fourth-更丰富的用户界面
- XAF之常用的CriteriaOperator
- svg滤镜, 更丰富的色彩魔法!!
- XAF之数据库数据的预填充
- XAF之刷新View的方法
- XAF之ViewController的公共事件
- 借助case,实现更丰富的分组查询统计
- 【HTML学习】第四章 更丰富的内容标记方法
- XAF之Action
- XAF之Security System
- XAF之ObjectSpace
- XAF之Templates Customization
- XAF之弹出式进度条
- XAF之PropertyEditor
- XAF之Dashboard
- PHPUnit袖珍指南 第十一章 残根
- Android屏幕旋转时Activity的生命周期
- 关于上传文件验证是否安全
- 创建和使用静态库 (C++)
- PHPUnit袖珍指南 第十二章 测试的其他用途
- XAF之更丰富的状态栏
- opencv获取视频彩色图像变成灰度图像出现倒立的情况分析
- 【Android】文件读写操作(含SDCard的读写)
- shmget - 共享内存
- ubuntu12.04(64位)下搭建android2.3/android4.0开发环境
- makefile.am VS makefile.in
- 构造函数不能被继承
- Hadoop单机环境搭建笔记(ubuntu)
- 连接mysql的javabean实例+简单分页