在XAF的开发中,详细Detail 或组合DashBoard页面,需要使用 LayoutControl 进行控件排列,下面讲述如何通过写代码进行操作。

0、DevExpress 的布局控件(DevExpress.XtraLayout) LayoutControl  有一个配置参数类 OptionsView 用于控制显示。

用  LayoutControl.OptionsView    属性操作设置 settings (通过 OptionsView 类提供).  这些设置允许你能运行时 高亮 highlighting,  项目边线可见,控制外观等显示在 LayoutControl 内的东西。

1、XAF 帮助手册的提示:操作 Layout Control

        用

Layout Control  安排布局 View Items (来自 CompositeView.Items 集合)。

依靠 Layout Control,为每个 View Item产生一个新的 Layout Item 。 Layout Item 设置允许你修改 caption, caption visibility and alignment等, 设置 Item size ,size 约束, indents and 外观appearance 设置等。

另外,一个 Layout Item 含有 View Item's control (animation)。当然你不能描述这个 control 的尺寸, 锚定方式与位置。所有这些设置完全通过 Layout Item 进行管理。 你能设置 Layout Item's 尺寸size 为特定值 (用 BaseLayoutItem.Size 属性)。部分 Layout Item's 区域被 Item's caption, indents and borders 占用, 其它剩余区域由 Layout Item's control 占用。

注意:一些 controls 不支持 resizing - 例如 text box or check box。所以,对含有这些controls的 Layout Item设置尺寸 将没有效果,因为 control 有固定尺寸,虽然事实是 Layout Item 允许重新设定尺寸。

为了操纵 Layout Control 和它的 Layout Items,按下列步骤进行:

  • 创建一个 新 View Controller 在 WinForms 模块;
  • 调度 Designer 为新 Controller。因 Controller 必须被激活为 Dashboard Views 或者 Detail Views,设置 Controller 的 ViewController.TypeOfView 属性要求的 value(Dashboard 、Detail)。
  • 用 Properties 窗口,设置订购Subscribe 控制器 Controller.Activated 事件,
  • 代替自动生成的Activated 事件 handler ,用下列代码.

    private void LayoutController_Activated(object sender, EventArgs e)
{
View.ControlsCreated += new EventHandler(View_ControlsCreated);
}
  • 因为目标是自定义 Layout Control,你需要创建后直接地操作它,。最好的方式是响应当前 View 的 View.ControlsCreated 事件.

  • 实现 View.ControlsCreated 事件处理, 如下:
void View_ControlsCreated(object sender, EventArgs e) {
// 操纵当前 Detail View 
DetailView view = (DetailView)View;
// 操作 Detail View's Control 转型为 Layout Control 
DevExpress.XtraLayout.LayoutControl layoutControl =
((DevExpress.XtraLayout.LayoutControl)view.Control);
//自定义 LayoutControl 的设置参数
//操纵 Layout Control 的 Layout Items 
foreach (object obj in layoutControl.Items) {
if (obj is DevExpress.XtraLayout.LayoutControlItem) {
DevExpress.XtraLayout.LayoutControlItem layoutControlItem =
(DevExpress.XtraLayout.LayoutControlItem)obj;
//自定义 当前 LayoutItem's settings 
}
}
} 为编译上述代码,增加引用 DevExpress.XtraLayout.v16.1 assembly 在 WinForms 模块.

layout 的应用的更多相关文章

  1. 前端框架 EasyUI (2)页面布局 Layout

    在 Web 程序中,页面布局对应用程序的用户体验至关重要. 在一般的信息管理类的 Web 应用程序中,页面结构通常有一个主工作区,然后在工作区上下左右靠近边界的区域设置一些边栏,用于显示信息或放置一些 ...

  2. Android Studio分类整理res/Layout中的布局文件(创建子目录)

    res/layout中的布局文件太杂,没有层次感,受不了的我治好想办法解决这个问题. 前几天看博客说可以使用插件分组,可惜我没找到.知道看到另一篇博客时,才知道这个方法不能用了. 不能用插件,那就手动 ...

  3. 如何在ASP.NET Web站点中统一页面布局[Creating a Consistent Layout in ASP.NET Web Pages(Razor) Sites]

    如何在ASP.NET Web站点中统一页面布局[Creating a Consistent Layout in ASP.NET Web Pages(Razor) Sites] 一.布局页面介绍[Abo ...

  4. [Android]异步 layout inflation(翻译)

    以下内容为原创,欢迎转载,转载请注明 来自天天博客:http://www.cnblogs.com/tiantianbyconan/p/5829809.html 异步 layout inflation ...

  5. Express 4 handlebars 不使用layout写法

    Express 4 handlebars 不使用layout写法 Express node nodejs handlebars layout 最近刚开始学习使用nodejs. 使用express搭建了 ...

  6. Android在layout xml中使用include

    Android include与merge标签使用详解 - shuqiaoniu的博客 - 博客频道 - CSDN.NEThttp://blog.csdn.net/shuqiaoniu/article ...

  7. Duilib源码分析(五)UI布局—Layout与各子控件

    接下来,继续分析duilib之UI布局Layout,目前提供的布局有:VerticalLayout.HorizontalLayout.TileLayout.TabLayout.ChildLayout分 ...

  8. compass reset和layout [Sass和compass学习笔记]

    reset 可以重置浏览器的的html的默认样式,因为各个浏览器对有些元素解析差别很大 通过重置样式可以让样式的浏览器兼容 更简单 使用方法简单 @import "compass/reset ...

  9. 七天学会ASP.NET MVC (五)——Layout页面使用和用户角色管理

    系列文章 七天学会ASP.NET MVC (一)——深入理解ASP.NET MVC 七天学会ASP.NET MVC (二)——ASP.NET MVC 数据传递 七天学会ASP.NET MVC (三)— ...

  10. Qt And MFC UI Layout

    界面布局 起初,计算机的交互是通过输入的代码进行的, 慢慢的有了图形之后, 就开始了图形界面的交互. 目前来说还有语音交互, 视频交互等多媒体的交互. 不管哪一种交互, 最终在计算机的角度都是信号的输 ...

随机推荐

  1. 网络编程基础【day09】:socket解决粘包问题之MD5(八)

    本节内容 1.概述 2.代码实现 一.概述 上一篇博客讲到的用MD5来校验还是用的之前解决粘包的方法,就是客户端发送一个请求,等待服务端的确认的这样的一个笨方法.下面我们用另外一种方法:就是客户端已经 ...

  2. Java的内省机制

    我现在的理解就是,Java的内省机制就是针对JavaBean的,可以获取到类的属性名称,以及属性的Getter和Setter方法,应该是在写框架的时候才会用到内省机制,还有一个地方可以用到内省机制,就 ...

  3. 3.建造者模式(Builder)

    Builder模式的缘起:    假设创建游戏中的一个房屋House设施,该房屋的构建由几部分组成,且各个部分富于变化.如果使用最直观的设计方法,每一个房屋部分的变化,都将导致房屋构建的重新修正... ...

  4. PHPMYWIND4.6.6前台Refer头注入+后台另类getshell分析

    下载链接 https://share.weiyun.com/b060b59eaa564d729a9347a580b7e4f2 Refer头注入 全局过滤函数如下 function _RunMagicQ ...

  5. HDU 1046(最短路径 **)

    题意是要在一个矩形点阵中求能从一点出发遍历所有点再回到起始点的最短路径长度. 不需要用到搜索什么的,可以走一个“梳子型”即可完成最短路径,而情况可以被分成如下两种: 一.矩形的长或宽中有偶数,则可以走 ...

  6. [Android] Android 的singleLine废弃解决

    之前写代码时,都没有注意singleLine已经废弃,每次想让TextView或Edittext单行显示都是直接使用,但是这样其实不好,因为废弃的函数可能在有的手机上出现问题,所以需要自己去找到替换的 ...

  7. 【六】Hystrix Dashboard

    除了隔离依赖服务的调用以外,Hystrix还提供了准实时的调用监控(Hystrix Dashboard) , Hystrix会持续地记录所有通过 Hystrix发起的请求的执行信息,并以统计报表和图形 ...

  8. redis 全局命令 查看所有的键,删除键,检查键是否存在,获取过期时间,键的数据结构类型

    Redis有5中数据结构,他们是键值对中的值,对于键来说,有一些通用的命令: 一.查看所有键 keys * 二.获取键总数:dbsize 三.检查键是否存在 exists 如果存在返回1,不存在返回0 ...

  9. redis的持久化方案

    Redis的高性能是由于其将所有数据都存储在了内存中,为了使Redis在重启之后仍能保证数据不丢失,需要将数据从内存中同步到硬盘中,这一过程就是持久化. Redis支持两种方式的持久化,一种是RDB方 ...

  10. String类中的常用方法

    String类 一.转换成String方法 1.public String(); 空参构造 初始化一个新创建的 String 对象,使其表示一个空字符序列 2.public String(byte[] ...