Blend 3.0 入门之数据绑定(How to Create SampleData)

简介: 随着7月份Silverlight 3.0 正式的发布,微软紧接着推出了为Silverlight 3.0量身定做的Expression3.0全系列开发工具,其中Blend还集成了SketchFlow草图工作流等强大功能,但是相对于Blend 2.0 ,新版本在数据绑定方面做了做重要改进,其中Sample Data就是一个全新的概念,特花费半天的时间向大家演示如何使用Sample Data 创建数据绑定应用程序。

随着7月份Silverlight 3.0 正式的发布,微软紧接着推出了为Silverlight 3.0量身定做的Expression3.0全系列开发工具,其中Blend还集成了SketchFlow草图工作流等强大功能,但是相对于Blend 2.0 ,新版本在数据绑定方面做了做重要改进,其中Sample Data就是一个全新的概念,特花费半天的时间向大家演示如何使用Sample Data 创建数据绑定应用程序。

clip_image002

1. 从PhotoShop 构建网站页面,层次结构一定要清楚,导入Blend后才能正确转换成对应的Layer. 这里显示的是简单的图层结构。

clip_image004

2. 新建Silverlight 3+wesite Project,成功后项目面板如下:

clip_image006

3.导入PhotoShop Files

File(文件)à Import Adobe PhotoShop Files ,显示如下结果

clip_image008

4. 选择除 bar 图层外的所有图层。导入后在对象面板上看层次图,如下,顺利导入。

clip_image010

顺便改下字体颜色,控件大小

clip_image012

5. OK ,现在做些有趣的事,找到右上角Data面板,点击 Add Simple Data Source 图标,新建一个Simple Data 数据源,然后修改Collection 中Property名称,以及选择Property数据类型,默认只有两个属性值,看到Collection右边的加号,选择Add Simple Property。点击Property 右边的Change Property Type, Property数据类型目前有String ,Number,Boolean,Image.而String类型又可以格式化为其他各种丰富类型.

这里主要注意Image类型。 如果不选择loction 本地文件,Blend 会用自带的椅子图片填充,当然你也可以浏览本地图片Location File,(注意,当本地图片文件被选择后,会自动拷贝到工程目录下并为图片构建相应访问接口及配置文件,完全与本地文件解除引用依赖),类型设置完成后,我们的数据源也就完成了。

clip_image014

现在当你点击collection 右侧的Edit Simple Values 就可以预览到数据源的所有数据,这些数据都是Blend 为用户体验而准备的临时数据,当后台修改了数据源绑定后,在运行时我们可以看到真实数据。

clip_image016

6. 现在我们使用Blend 3.0中使用最多,也是最炫的操作, Just Drag and Drop , No Code.

选择一个属性,鼠标按住并拖动到画布上。请注意Data面板左上角选择的是Detail Mode 还是 List Mode。

clip_image018

1) 详细模式Detail Mode。拖动到画布上的属性会被包装在TextBlock中,并绑定DataContext属性值。支持多选,你可以同时选中Image Property 和Name Property 。而当选择一起拖到画布上,构成对象对应属性绑定。而这些同时绑定的属性之间都带有控件绑定监听器,即实现了INotifyPropertyChanged , ,当多个属性绑定到同一个实例的不同属性时,实例改变,那么所有监听者都会被通知并更新绑定值。看程序运行后就知道了^_^.建议大家看看Silverlight 3.0文档中数据绑定那章。

2) 列表模式 List Mode。 拖动Collection 到画布,数据会被包装在ListBox中,ListBox的ItemSource被绑定为Collection ,(你也完全可以自己新建个ListBox控件,拖动Collection或者属性到你的控件上),ItemSource只能被绑定为 Collection 类型,最好是实现了INotifyCollectionChanged<T>接口的集合类型(像ObservableCollection<T>),这在项目应用中十分有用,具体就不展开了,有兴趣的去看一下设计模式中的观察者模式。

1.1 这里我们先创建一个ListBox, 并设置它的项目模板,因为很多情况下我们并不满意ListBox的项目排列样式或者项大小,这时可以修改ListBox的ItemPanelTemplate和ItemTemplate,先将ListBox中的项横排显示,在ListBox控件上右击, Edit Additional Templateà Edit LayOut Of Items à Create Empty ,确定后选择StackPanel ,在右侧属性面板,找到LayOut 中 Orientation 属性 ,从Verical 改为 Horizontal.按一下画布面板左上角ListBox按钮回到主页面。

1.2 然后我们选择List模式下拖动Image属性到ListBox上,完成绑定(此方法并不是每次都成功,比较郁闷,有明白原因的说一下)。

1.3 接着我们调整元素模板,在ListBox控件上右击,Edit Additional TemplateàEdit GeneratedItemsàEdit Current , 调整项的大小,当然,你也可以应用各种项模板的自定义样式。 如果绑定成功就会看到下图所示。

clip_image020

上述方法不是每次都能将属性绑定到控件。所以自己摸索出一种方法,仅供参考。

1.1 在List模式下,将Image属性单独拖到空白区域,创建ListBox,并实现了自动绑定。

1.2 将ListBox的项目模板绑定到刚创建的样式上。

7. 下面,在Detail模式下,分别将Collection中属性直接拖动到画布上对应的TextBlock控件上,Blend会自动绑定对象属性({Binding Price}),但要注意最好选择最顶层为当前活动层(即选择LayOutRoot ,因为它在建立ListBox绑定时就被默认绑定到{Binding SampleDataSource}了,所以在该层下面的所有控件的绑定操作都会往上溯并依赖该源。

1) 当然也许会有不能绑定的情况,这时只好手动了,将所有要绑定的TextBlock的Text设置为Custom DataBinding 值为{Binding YourPropertyName}

2) 将包产品详细信息的Product层的DataContext属性设置为Custom DataBinding 值为{Binding SelectedItem, ElementName=listBox}

3) 最后,在Detail模式下,拖动图像到空白区域,创建一个绑定好的Image控件,可以查看它上层Grid 控件的DataContext同样是将Custom Binding绑定到了{Binding SelectedItem, ElementName=listBox}, 调整好图像Grid的位置。

clip_image022

8. 所有绑定结束,按下F5 预览

clip_image024

虽然是一个小的Demo ,但也算是把Sivlerlight 3.0中能涉及到的基本数据绑定知识复习了一遍.
其实这是国外的一个Blend 3.0视频教程,能把它写下来也费了不少功夫,希望大家多多交流分享啊,上面操作中存在的问题也希望知道的人能说一下。

源码下载

目录
相关文章
|
3月前
|
C#
通过Demo学WPF—数据绑定(一)
通过Demo学WPF—数据绑定(一)
38 1
|
3月前
|
存储 开发框架 .NET
通过Demo学WPF—数据绑定(二)
通过Demo学WPF—数据绑定(二)
39 1
|
5月前
|
JavaScript 容器
form-create-designer中怎么扩展自定义组件
该内容是关于在某个框架(可能是Vue)中导入和使用自定义组件的教程。首先,通过`import`语句引入自定义组件`MyButton`和`FcDesigner`。然后,使用`FcDesigner.component()`或`app.component()`方法挂载组件。接着,定义组件的拖拽规则,包括其在菜单的位置、图标、名称和唯一ID,以及组件的渲染和属性配置规则。最后,将组件的拖拽规则挂载到设计器(`$refs.designer`)中,以便在界面上使用。
221 2
|
6月前
|
JavaScript 前端开发
Vue的高级表格组件库【vxe-table】
Vue的高级表格组件库【vxe-table】
204 0
|
6月前
|
移动开发 小程序 前端开发
uniapp中uview组件库丰富的Table 表格的使用方法
uniapp中uview组件库丰富的Table 表格的使用方法
382 2
|
JavaScript 前端开发
Vue —— 基础(零)(模板语法、数据绑定、el/data写法、MVVM模型)
Vue —— 基础(零)(模板语法、数据绑定、el/data写法、MVVM模型)
112 0
|
XML JavaScript 前端开发
SAP UI5 的数据绑定语法概述
SAP UI5 的数据绑定语法概述
|
JavaScript
vue3 源码学习,实现一个 mini-vue(十):构建 renderer 渲染器之 Text Comment 节点的渲染
vue3 源码学习,实现一个 mini-vue(十):构建 renderer 渲染器之 Text Comment 节点的渲染
vue3 源码学习,实现一个 mini-vue(十):构建 renderer 渲染器之 Text Comment 节点的渲染
|
SQL 前端开发 JavaScript
【Vue】(1)基础知识 | MVVM | 基础指令 | v-model | v-for | v-if | v-show | 实例
【Vue】(1)基础知识 | MVVM | 基础指令 | v-model | v-for | v-if | v-show | 实例
119 0
【Vue】(1)基础知识 | MVVM | 基础指令 | v-model | v-for | v-if | v-show | 实例
|
JavaScript
Ant Design Vue 给table表格行加点击事件
Ant Design Vue 给table表格行加点击事件
2089 0
Ant Design Vue 给table表格行加点击事件