本文和大家分享一下Silverlight 4 RIA Service dataform Template, 代碼選擇控件,Validate驗證使用技巧
功能
定義只讀,新增,編輯三塊模塊
定義模板的目的是更好的復用和提高XAML代碼的可讀性和可維護性,也可以更好的分工合作。下面是一個歸并關系的維護界面。


主要有表頭,多個表體組成,為了把所有操作盡量在一個頁面中完成,表頭使用一個DataForm空間,表體使用DataGrid和DataForm組合實現。
而DataForm有三種狀態分別是只讀(顯示不可編輯),編輯,新增。因此我們需要為這三種模板來控制每個控件的布局和屬性,比如只讀狀態下空間的IsReadOnly為True,編輯狀態下,關鍵字字段的IsReadOnly為True,其他字段可以編輯,編輯狀態使用選擇控件方便輸入,新增狀態下,對于關鍵字段和必填字段需要用粗體字體顯示(默認)或其他形式提醒操作用,這都需要在不同的模板中定于。
提示:布局使用Data Filed控件系統默認根據DataForm控件的狀態改變Data Field編輯狀態
下圖是編輯狀態下的布局

模板文件

XAML代碼
自定義代碼選擇控件,快速輸入控件
最常見的單機放大鏡彈出所有記錄選擇后返回頁面或是在一個TextBox中輸入一個代碼(料號)自動帶出名稱,單位,單價等信息實現快速輸入。如果用asp.net需要寫需要JavaScript代碼,而使用Silverlight則非常容易就能實現。

XAML代碼;
通過把需要帶出的字段綁定到自定義控件上。
Silverlight代碼
屬性綁定代碼

賦值代碼
為了提高代碼的可讀性,推薦使用匿名方法
類似的簡單的CodeValue的選擇使用AutoCompleted控件自己小改一下便可實現
下面是實現代碼,名稱快速轉換的實現,顯示名稱保存代碼
定義一個Converter,和一個代碼組的數據源

數據源繼承一個接口方便轉換時使用
字段輸入驗證(唯一性驗證)
通過對DomainService生成的metadata class的字段添加屬性進行驗證。為了更好維護對驗證數據的提示信息,可以使用資源文件保存比如,驗證支持特定屬性和正則表達式,自定義驗證
代碼
唯一性驗證
需要對提示用戶輸入的信息重復了

代碼

注意:這里需要添加一個編譯條件,不然無法編譯過去。