本文和大家分享一下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的字段添加属性进行验证。为了更好维护对验证数据的提示信息,可以使用资源文件保存比如,验证支持特定属性和正则表达式,自定义验证
代码
唯一性验证
需要对提示用户输入的信息重复了

代码

注意:这里需要添加一个编译条件,不然无法编译过去。