XAML中ContentControl,ItemsControl,DataTemplate之间的联系和区别

接触XAML很久了,但一直没有深入学习。今天学习了如标题所示的内容,所以来和大家分享一下,或者准确的说是自我回顾一遍.

在XAML中,有两类我们常见的控件,分别是ContentControl和ItemsControl,典型的标识是一个有Content属性,另一个有Items属性。

一:ContentControl

  我们平时最常见的该类型控件有Button,RadioButton,CheckBox等。一般有Content属性的都是这类控件。在该类控件中,有一个属性便是ContentTemplate,从名称就可以看出来,、

  可以用它来定义显示内容的模板。而这个ContentTemplate属性的类型是DataTemplate,在对象浏览器中看到如下表示:

public Windows.UI.Xaml.DataTemplate ContentTemplate { get; set; }

二:ItemsControl

  常见的列表控件都是继承自该类型。在该类型中有一个属性:ItemsTemplate,与上面说的ContentTemplate遥相呼应,没错,它也是一个DataTemplate类型的属性。

public Windows.UI.Xaml.DataTemplate ItemTemplate { get; set; }

这样看来就清晰了,所谓ItemsTemplate和ContentTemplate都是DataTemplate类型的属性。可以用来定义对应控件显示数据的模板。

  

时间: 2024-12-08 16:15:22

XAML中ContentControl,ItemsControl,DataTemplate之间的联系和区别的相关文章

在XAML中为ItemsControl定义分组,适合mvvm绑定

可以先参考一下这个文章: http://www.cnblogs.com/zoexia/archive/2014/11/30/4134012.html step0: 先展示一下最简陋的界面: 上图是一个控件容器:ListBox,每一项都是一个Student的学生数据,它继承自ItemsControl,所以是可以实现分组的.容器内每个组用Expander可伸缩控件表示.请保证已经完全理解图中所有控件和数据的含义,然后再进行下一步. step1: 首先,我们从dataContext数据源入手,因为它是

WPF中ControlTemplate和DataTemplate的区别

下面代码很好的解释了它们之间的区别: <Window x:Class="WPFTestMe.Window12" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="Window12" Height="300&q

WPF解决当ScrollViewer中嵌套ItemsControl时,不能使用鼠标来滚动翻页

1. ScrollViewer:滚动条容器,当内容超过指定的长度和宽度后,就会出现滚动条,而且可以使用鼠标中键来滚动, 简单例子如下: 1 <Window x:Class="ConnectScrollViewScrollingDemo.MainWindow" 2 xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 3 xmlns:x="http://schemas.mic

[UWP]xaml中自定义附加属性使用方法的注意项

---恢复内容开始--- 随笔小记,欢迎指正 在UWP平台上做WVVM的时候,想针对ListBox的SelectionChanged事件定义一个自定义的命令,于是使用自定义附加属性的方式.可是最后自定义附加属性SelectionChangedCommand写好了,却不知道怎么在XAML中使用. 我的自定义属性如下: namespace SelectionChangedCommand.Services { public static class SelectionChangedBehavior {

【WinRT】【译】【加工】在 XAML 中制作圆形图片

原文地址:http://timheuer.com/blog/archive/2015/05/06/making-circular-images-in-xaml-easily.aspx 前阵子似乎一些比较酷的程序开始使用圆形头像来取代之前方形或者圆角边的显示方式了.我(原文作者.下文中如果没特别提到,均指原文作者)在两年前注意到一些 App 开始这样做的时候,做出了一个偏激的发言: 看看吧,程序里会越来越多圆形的头像了,方形的将不会再有了 ——Tim Heuer(@timheuer) 2013 年

WPF Xaml中创建集合

原文:WPF Xaml中创建集合 首先在xaml中创建集合是一个不可取的方法. 本方法仅作为xaml的学习. 本文略微无聊,主要是编写的东西都是老玩意. 首先是定义一个类,作为你要加载集合的模型. 结构如下 internal class Student { public string Name { get; set; } public int Age { get; set; } } internal class StudentList:List<Student> { } class Strin

Android中Fragment和Activity之间的互操作代码例子

摘要 本文介绍了Android中一个Activity中有多个Fragment的情况下,Fragment之间如何通过Activity进行互操作. 源代码 源代码地址为:http://download.csdn.net/detail/logicteamleader/8931199 源代码使用ADT编写,ADT版本为2014,Android版本为android-22. 技术要点 1.在Activity中的多个Fragment之间要互操作,一定要通过此Activity,不能直接通信: 2.在Activi

JavaScript中this和$(this)之间的区别

jQuery中this和$(this)之间的区别: this返回的是当前对象的html对象,而$(this)返回的是当前对象的jQuery对象 举个正确的Demo实例: $("#textbox").hover( function() { this.title = "Test"; }, fucntion() { this.title = "OK”; } ); 以上的this为html元素即元素textbox,该元素有title属性,因此以上的程序没有错误.如

cocos2d-x 中LUA和平台之间的函数调用理解

先看一张流程图如下: 第一步: 先把NDKHelper中的方法转成LUA中可以调用的,转得方法可参考quick中LUA的用法.这个类主要是中间桥梁的作用,它可以根据是什么平台调用IOSNDKHelper或者AndroidSNDKHelper,这些判断都是用C语言来写的.还有就是对一些回调函数的保存机制和平台要用LUA中一些方法的保存. 第二步: IOS平台需要处理的就是IOSNDKHelper,这个类主要就是接收和发送给NDKHelper数据的方法,还有一个就是加载IOS平台的BasePlatf