Silverlight3系列(八)数据绑定 Data Binding 3 数据模板 Data Templates

8 数据模板

数据模板在xaml标记中是比较重要的,它定义了绑定对象如何显示。一共有两种类型的控件支持数据模板:

1)内容控件(具有Content属性的控件)通过ContentTemplate属性支持数据模板。用来显示你放在Content属性中的任何东西。

2)列表控件(从ItemsControl中继承而来的控件)通过ItemTemplate属性支持数据绑定。这个模板用来显示集合(你提供给ItemsSource属性的对象集合)中每一个Item。

列表模板是以内容模板为基础的,就好像ListBox的ListBoxItem,ComboBox的ComboBoxItem,等等。无论你是用什么ItemTemplate,你每一Item还是可以使用ContentTemplate。

<ListBox >
             <ListBox.ItemTemplate>
                 <DataTemplate>
                     <ScrollViewer>
                         <TextBlock Text="{Binding Name}"></TextBlock>
                     </ScrollViewer>
                 </DataTemplate>
             </ListBox.ItemTemplate>

         </ListBox>

当你绑定产品集合Products到一个ListBox的时候(通过设置ItemsSource),每一个ListBoxItem都是一个 Product对象。ListBoxItem.Content属性设置为一个Product对象,ListBoxItem.ContentTemplate来控制数据的显示,上面是绑定到产品名称Name。

8.1 分离重用模板

就像样式一样,模板通常是定义在页面或者应用级别,而不是定义在一个list上面。分离通常是比较好的,尤其是你的模板很长,很复杂,或者在一个控件上面使用多个模板。同时你也可以统一你的界面风格,在任何地方都可以使用这个模板。

需要这么做的的话,你需要的就是在资源集合Resources Collection中定义并且给它一个唯一的名字。下面定义了一个模板资源

代码

<UserControl.Resources >
                 <DataTemplate x:Key="ProductDataTemplate">
             <Border Margin="5" BorderThickness="1" BorderBrush="SteelBlue" CornerRadius="5">
                 <Grid Margin="3">
                     <Grid.RowDefinitions >
                         <RowDefinition></RowDefinition>
                         <RowDefinition></RowDefinition>
                     </Grid.RowDefinitions>
                     <TextBlock FontWeight="Bold" Text="{Binding ModelNumber}"></TextBlock>
                     <TextBlock FontWeight="Bold" Grid.Row="1" Text="{Binding ModelName}"></TextBlock>
                 </Grid>
             </Border>
         </DataTemplate>
     </UserControl.Resources>

下面是使用方法

<ListBox Name="lstProducts" x:Name="lstProducts" HorizontalAlignment="Center"
                  ItemTemplate="{StaticResource ProductDataTemplate}"></ListBox>

Data templates不需要数据绑定,换句话说,你不需要ItemsSource属性来绑定数据到ListBox,你可以自己调用ListBox.Items.Add()方法。

时间: 2024-09-22 08:14:34

Silverlight3系列(八)数据绑定 Data Binding 3 数据模板 Data Templates的相关文章

Silverlight3系列(七)数据绑定 Data Binding 3 数据类型转换 Data Converte

Silverlight3系列(七)数据绑定 Data Binding 3 数据类型转换 Data Converter 7 数据转换 在普通的情况下,数据从后台到前台显示,没有任何变化.看起来是符合逻辑的,但是有可能不是你想要的效果,数据源的数据可能是的低级别的(这里的低级别是说数据比较原始,或者说是数据库可以理解的,不是最终用户可以理解的形式),你不想让他直接显示在界面上.例如:你可能会将数字变成用户可以看懂的形式.或者是想让日期显示成长格式的字符串.如果是这样的话,你需要将数据转换成正确的显示

数据绑定(data binding )1

数据绑定(Data Binding)-Part1 原文链接 : Data Binding – Part 1 原文作者 : Mark Allison 译文出自 : 开发技术前线 www.devtf.cn.未经允许,不得转载! 译者 : desmond1121 校对者: desmond1121 2015年的Google I/O大会发布了很多新的Android库和工具,Data Binding就是其中之一.在本系列文章中,我们会探索它的强大之处. 值得注意的是:我写这篇文章的时候,Data Bindi

数据绑定(data binding)

据绑定(Data Binding)-Part2 原文链接 : Data Binding – Part 2 原文作者 : Mark Allison 译文出自 : 开发技术前线 www.devtf.cn.未经允许,不得转载! 译者 : desmond1121 校对者: desmond1121 在之前我们做了一个简单的Twitter客户端,但是简单地介绍ViewHolder实现,可能没有充分地让你明白Data Binding的使用方法.那么我们现在就来看看怎么样将Data Binding引入到项目中.

数据绑定(data binding)2

据绑定(Data Binding)-Part2 原文链接 : Data Binding – Part 2 原文作者 : Mark Allison 译文出自 : 开发技术前线 www.devtf.cn.未经允许,不得转载! 译者 : desmond1121 校对者: desmond1121 在之前我们做了一个简单的Twitter客户端,但是简单地介绍ViewHolder实现,可能没有充分地让你明白Data Binding的使用方法.那么我们现在就来看看怎么样将Data Binding引入到项目中.

Android Data Binding(数据绑定)用户指南

1)介绍 这篇文章介绍了如何使用Data Binding库来写声明的layouts文件,并且用最少的代码来绑定你的app逻辑和layouts文件. Data Binding库不仅灵活而且广泛兼容- 它是一个support库,因此你可以在所有的Android平台最低能到Android 2.1(API等级7+)上使用它. 需求:Android Plugin for Gradle 1.5.0-alpha1 或 更高版本. 2)构建环境 要开始使用Data Binding,首先需要在Android SD

数据绑定(data binding)3

数据绑定(Data Binding)-Part3 原文链接 : Data Binding – Part 3 原文作者 : Mark Allison 译文出自 : 开发技术前线 www.devtf.cn.未经允许,不得转载! 译者 : desmond1121 校对者: desmond1121 勘误:原文中使用ModelView一词,但实际上MVVM是Model-View-ViewModel,故应为ViewModel. 在之前的文章中,我们使用Data Binding与布局中的TextView配合搭

Data Binding 用户指南(Android)

1. 介绍 这篇文章介绍了如何使用Data Binding库来写声明的layouts文件,并且用最少的代码来绑定你的app逻辑和layouts文件. Data Binding库不仅灵活而且广泛兼容- 它是一个support库,因此你可以在所有的Android平台最低能到Android 2.1(API等级7+)上使用它. 需要:Android Studio 1.3.0-beta1 或更高版本. 测试版本 请注意:Data Binding库当前是测试版本.在Data Binding处于测试阶段时,开

Android Data Binding 用户指南

1)介绍 这篇文章介绍了如何使用Data Binding库来写声明的layouts文件,并且用最少的代码来绑定你的app逻辑和layouts文件. Data Binding库不仅灵活而且广泛兼容- 它是一个support库,因此你可以在所有的Android平台最低能到Android 2.1(API等级7+)上使用它. 需求:Android Studio 1.3.0-beta1 或 更高版本. a)测试版本 请注意:Data Binding库当前是测试版本.在Data Binding处于测试阶段时

Silverlight3系列(四)数据绑定 Data Binding 1

今天我们讨论的是Silverlight3中的数据绑定,内容来自 <Pro Silverlight3 in C#>的读后感,中文名称可以译为<Silverlight3高级编程 C#版>.我找到的是一本PDF的,在网上可以搜索到下载地址. 数据绑定提供了一种,从对象中获取信息,然后显示在你的应用程序的界面上,同时不需要写冗长的代码就可以完成所有的工作的方式.通常情况下,富客户端提供两种绑定方式,不仅可以从兑现获取数据,显示到界面上,也可以将界面的数据传回给对象. Silverlight