在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. python APScheduler

    简介 APScheduler基于Quartz的一个Python定时任务框架,实现了Quartz的所有功能,使用起来十分方便.提供了基于日期.固定时间间隔以及crontab类型的任务,并且可以持久化任务 ...

  2. linux之awk命令获取最后一列

    统计分析中经常用的awk命令,其中用的最多的还是切分 cat  test | awk -F',' '{print $1,$2} 能够很好的将记录按照需要切分开, 但是如何获取最后一列呢? 可以使用aw ...

  3. 如何优雅地使用Sublime Text3

    此文非原创,出处见文章结尾. 一.Sublime Text 3插件安装 优雅使用Sublime Text,插件则是不可缺少的存在:而插件的备份就显得非常的重要(譬如:各平台同步:更换系统/电脑,迅速使 ...

  4. STM32学习笔记:【003】GPIO

    版本:STM32F429 Hal库v1.10 在STM32中,最常用到的功能莫过于GPIO(General Purpose Input Output .通用输入/输出)了,在STM32中,除了除去AD ...

  5. ACM-ICPC 2018 焦作赛区网络预赛 B Mathematical Curse(DP)

    https://nanti.jisuanke.com/t/31711 题意 m个符号必须按顺序全用,n个房间需顺序选择,有个初始值,问最后得到的值最大是多少. 分析 如果要求出最大解,维护最大值是不能 ...

  6. extern "C" 含义

    extern "C" 被 extern 限定的函数或变量是 extern 类型的 被 extern "C" 修饰的变量和函数是按照 C 语言方式编译和链接的 e ...

  7. spring拦截器中修改响应消息头

    问题描述 前后端分离的项目,前端使用Vue,后端使用Spring MVC. 显然,需要解决浏览器跨域访问数据限制的问题,在此使用CROS协议解决. 由于该项目我在中期加入的,主要负责集成shiro框架 ...

  8. docker 系列 - Docker 安装和Hub Mirror地址设置

    ======================为什么要使用Docker?======================= 容器真是个好东西, (1)容器能提供隔离性; (2)容器能打包环境, 简化部署难度 ...

  9. SpringBoot系列: 集成MyBatis

    本文主要修改自下面博客:http://www.ityouknow.com/springboot/2016/11/06/spring-boo-mybatis.htmlhttp://tengj.top/2 ...

  10. Java实现猜数字,附带提示功能。

    很简单的一段代码: package com.changeyd.demo; import java.util.Random;import java.util.Scanner;public class M ...