国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

XAF應用開發教程(七)外觀控制模塊

2019-11-14 13:39:14
字體:
來源:轉載
供稿:網友

很多時候,我們需要按照不同的條件顯示不同的效果,在傳統的軟件開發中,我們會直接使用 控件名稱.BackColor,Enable,Visible等屬性進行控制。

如果一個業務對象在多處使用,要么我們會去一個地方一個地方的修改,要么會集中代碼做個方法進行控制。

在XAF中,就實現了一處控制全局生效的方法。

下面我們來看看外觀模塊:

上圖中展示了幾種效果:1,整行紅色背景。2,藍色字體加刪除線。3編輯時控件禁用。4.單元格顏色變化。

詳細界面中,同樣生效了,上面兩幅圖,一個是web的,一個winform的。

下面我們演示如何制作相同的效果:

    [DefaultClassOptions]    //[ImageName("BO_Contact")]    //[Default//[DefaultListViewOptions(MasterDetailMode.ListViewOnly, false, NewItemRowPosition.None)]    //[Persistent("DatabaseTableName")]    // Specify more UI options using a declarative approach (https://documentation.devexpress.com/eXpressAppFramework/CustomDocument112701.aspx).    [Appearance("紅色禁用","ViewItem", BackColor ="Red",TargetItems ="*",Criteria ="禁用")]    [Appearance("藍色未審批","ViewItem", BackColor = "Blue", TargetItems = "*", Criteria = "!已審核")]    public class 客戶 : BaSEObject    {

在客戶類上面寫兩條Appearance Attribute即可。

先看效果:

很簡單的兩條語句就有了效果,點擊進入詳細視圖后,也是同樣生效的。

我們再去XAFML看看外觀規則:

看起來比代碼下面容易理解多了,但是XAF的開發人員習慣是在代碼中寫規則,這樣更快,否則還要切換到xafml中,一會寫代碼,一會設置xafml也是夠煩了。

所以我們的選擇就是傳說中的code first充血模型。

 下面把上圖中每個屬性的功能說一下:

AppearanceItemType:要控制的項目

 說明
Public fieldAction要控制的是按鈕
Public fieldLayoutItem詳細界面中使用的布局項目的名稱
Public fieldViewItem可以簡單的理解為屬性的名稱,在詳細視圖中除了屬性會生成對應的ViewItem,還可以手工的建立如靜態文本、靜態圖像類的ViewItem,當然那些也在控制范圍內。

Context:

可選值Appearance Rule's Activity Scope舉例
內置了三種類型 DetailView ListView Any.詳細視圖,列表視圖或所有視圖.Any
指定的視圖ID只生效于指定的視圖.MyClass_ListView;MyClass_DetailView
Any;視圖名稱所有視圖,但除Any后面列出的視圖名稱Any;MyClass_ListView;MyClass_LookupListView
"DetailView" 或 "ListView" 后跟視圖名稱.所有列表視圖,和指定的視圖DetailView;MyClass_ListView

Criteria:滿足指定的條件時生效,如 年齡>20

Method:可以在指定的方法返回true值時規則才生效,如:

using DevExpress.ExpressApp.ConditionalAppearance;//...public class Product : BaseObject {    public Product(session session) : base(session) { }    public decimal Price {        //...    }    public ProductStatus Status {        //...    }    [Appearance("RuleMethod", AppearanceItemType = "ViewItem", TargetItems = "*", Context = "ListView",     BackColor = "Green", FontColor = "Black")]    public bool RuleMethod() {        if (Price < 10 && Status == ProductStatus.Active) {            return true;        }        else {            return false;        }    }}

Priority :如果有多個規則應用于同一個元素上,將按這個優先級決定哪個會生效,值越大優先級越高。

TargetItems:

示例說明
"TargetElementId" 目標元素ID比如填寫屬性的名稱,LayoutItem的名稱
"TargetElementId1;TargetElementId2"多個元素的ID,使用分號分隔
"*"所有元素
"*;TargetElementId1;TargetElementId2"所有元素,除*號后面的指定的元素之外

BackColor:背景顏色

Enable:如果指定的是ViewItem,LayoutItem是指控件是否可用。如果是按鈕,是指是否可以點擊。

FontColor:字體顏色

FontStyle:字體樣式,比如加粗,加刪除線之類的。

Visibility:是否可見。

下表展示了效果生效的環境:

個性化列表單元格列表編輯模式詳細視圖

詳細視圖

靜態文字

布局項目布局組、TAB按鈕
Font Color  
Font Style  
Back Color   
Enabled/Disabled    
Visible/Invisible   

 

比如,在列表中,Visible的控制,一個列表有很多行所以肯定是沒辦法做到有些行的內容是隱藏的,有些行的內容是可見的。

 

Appearance的功能就介紹到這里。

 

QQ4603528 群:50185791

 


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 突泉县| 新乡县| 察哈| 敖汉旗| 萨迦县| 浏阳市| 武城县| 额尔古纳市| 抚顺市| 广元市| 灵寿县| 泸溪县| 芜湖县| 内乡县| 鄂托克前旗| 江陵县| 当阳市| 白朗县| 山西省| 平乐县| 满洲里市| 温泉县| 苏州市| 神木县| 兴隆县| 黄浦区| 婺源县| 龙门县| 青阳县| 潢川县| 玉山县| 隆尧县| 福海县| 垦利县| 武安市| 滁州市| 绥棱县| 栾川县| 烟台市| 东乌珠穆沁旗| 蕲春县|