Windows Phone理解和运用ItemTemplate、ContentTemplate和DataTemplate_移动开发_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > 移动开发 > Windows Phone理解和运用ItemTemplate、ContentTemplate和DataTemplate

Windows Phone理解和运用ItemTemplate、ContentTemplate和DataTemplate

 2014/11/18 9:44:46  wangniuzen  程序员俱乐部  我要评论(0)
  • 摘要:2.2.5ItemTemplate、ContentTemplate和DataTemplate在理解ItemTemplate、ContentTemplate和DataTemplate的关系的之前,我们先来看看ContentControl类和ItemsControl类。ContentControl类是内容控件的基类,如Button,CheckBox,最明显的特征就是这个控件有Content属性,有Content属性的系统控件都是ContentControl的子类
  • 标签:Windows item Ten 理解 运用

 

 

2.2.5 ItemTemplate、ContentTemplate和DataTemplate     在理解ItemTemplate、ContentTemplate和DataTemplate的关系的之前,我们先来看看ContentControl类和ItemsControl类。ContentControl类是内容控件的基类,如Button, CheckBox,最明显的特征就是这个控件有Content属性,有Content属性的系统控件都是ContentControl的子类。ItemsControl类是列表内容控件的基类,如ListBox,它和ContentControl类是类似的,只不过ContentControl类是单项的内容,ItemsControl是多项的内容。     那么所有继承自ContentControl的内容控件的ContentTemplate属性和所有继承自ItemsControl的列表控件的ItemTemplate属性,都是DataTemplate类型的,意思就是我们可以通过DataTemplate来定义ContentControl和ItemsControl的控件的UI效果和数据的显示。 2.2.6 数据模板的使用     DataTemplate是一种可视化的数据模板,它强大的作用在于可以把数据通过绑定的方式展现到控件上。在上面的例子中,我们介绍了用DataTemplate去实现了UI控件的内容的显示,那么其实DataTemplate最主要的作用并不是去取代ControlTemplate的样式定义,而是通过数据绑定把数据的控件的数据源的信息展现到控件上。     下面我们还是通过一个Button的控件来看一下DataTemplate的数据绑定是如何发挥作用的。     代码清单2-5:数据模板(源代码:第2章Examples_2_5)     (1)首先定义一个Person类表示是数据实体的类型,代码如下:     public class Person    {        public string LastName { get; set; }        public string FirstName { get; set; }    }

    (2)设计一个DataTemplate,并把这个DataTemplate作为一个资源来使用,这是和Style资源是一样的道理,DataTemplate也可以作为公共的资源给多个控件去使用。那么这个模板的内容是使用StackPanel控件把Person对象的信息水平排列起来。 <ignore_js_op>copycode.gif 
    < Page.Resources>                                                                                            


    (3)创建一个Button控件,把ContentTemplate属性和模板资源关联起来。      

    (4)创建一个Person对象并且赋值给Button控件的Content属性。     singlePersonButton.Content = new Person { FirstName = "lee", LastName = "Terry" };     最后我们可以看到按钮的运行效果如图2.14所示,DataTemplate可以把数据对象绑定起来来实现更加灵活的通用的强大的UI数据显示效果。 <ignore_js_op>021400291149097.png      图2.14 数据模板绑定的按钮     那么刚才的示例是DataTemplate在ContentControl类型的控件上的应用,那么下面我们再来看看DataTemplate在ItemsControl类型的控件上的实现,ContentControl和ItemsControl也是可以直接作为控件去使用的,如果我们并不需要Button或者ListBox这些控件的一些高级功能,就可以直接使用ContentControl或者ItemsControl控件。     (1)定义一个ItemsControl控件,把ItemTemplate属性和模板资源关联起来。
    (2)创建一个Person对象的集合并且赋值给ItemsControl控件的ItemsSource属性。         Persons.Add(new Person { FirstName = "lee2", LastName =     "Terry2" });            Persons.Add(new Person { FirstName = "lee3", LastName =     "Terry3" });         Persons.Add(new Person { FirstName = "lee4", LastName =     "Terry4" });           Persons.Add(new Person { FirstName = "lee5", LastName =     "Terry5" });         itemsControl.ItemsSource = Persons;     这时候可以看到运行效果如图2.15所示,ItemsControl可以把数据集合通过列表的形式展现出来,但是你会发现直接用ItemsControl实现的列表的功能非常有限,并且也不能滚动,接下来再结合一下ContentTemplate来进行完善这个列表的控件。 <ignore_js_op>021402018173642.png 2014-6-8 10:49 上传 下载附件 (11.22 KB)      图2.15 数据模板绑定的列表     (3)定义一个ItemsControl的样式,其实就是自定义一个ControlTemplate的模板作为ItemsControl控件的模板来使用,那么这个模板就是一个内容的展现形式的模板。我们在ControlTemplate模板上定义了一个ScrollViewer控件然后里面再使用了一个StackPanel控件,最里面的是ItemsPresenter控件。列表的DataTemplate的显示内容就是直接投影在ItemsPresenter控件上面的。我们对ScrollViewer控件和StackPanel控件都设置了不同的边框颜色,这样在运行的时候就可以很明显地看出来控件之间的关系是怎样的。
   


    (4)在ItemsControl上添加Style属性为上面定义的样式。         
    程序的运行效果如图2.16所示。 <ignore_js_op>021403313649218.png

详细说明:http://wp.662p.com/thread-8220-1-1.html

发表评论
用户名: 匿名