Template、ItemsPanel、ItemContainerStyle、ItemTemplate区别和联系
转自:https://www.cnblogs.com/changbaishan/p/4399593.html
1、Template是指控件的样式
在WPF中所有继承自contentcontrol类的控件都含有此属性,(继承自FrameworkElementdl类的TextBlock等控件无)。Template用于定义控件结构(Visual Tree),和Style有点容易混淆,每个控件初始没有Style属性,而在WPF中所有的控件都有默认的Template。Style也做样式解释,但是它改变的只是控件原来的属性,比如长宽颜色之类的,而Template可以改变控件的形状外形,还可以根据需要往里面添加其他的控件来丰富当前的控件。Style可以用来定义一定范围内的所有对应控件的样式,所以平时多为两者结合使用。
[html] view plaincopy
- <Style x:Key="ListBoxStyle1" TargetType="ListBox">
- <Setter Property="Background" Value="#FFFFFFFF"/>
- <Setter Property="Template">
- <Setter.Value>
- <ControlTemplate TargetType="ListBox">
- //............相关代码
- </ControlTemplate>
- </Setter.Value>
- </Setter>
- </Style>
2、ItemsPanel是指控件的子项的布局样式,只有那些有item的控件才有此属性,如ListBox ,Combox,TreeView,DataGrid,TabelControl等,后面的两个也是如此。
eg:在不做设置的时候,ListBox的Item子项是纵向排列的,但是可以通过设置ItemPanell来实现横向排列或者其他更复杂的排列方式。
[html] view plaincopy
- <ListBox >
- <ListBox.ItemsPanel>
- <ItemsPanelTemplate>
- <VirtualizingStackPanel Orientation="Horizontal"/>//横向排列
- </ItemsPanelTemplate>
- </ListBox.ItemsPanel>
- </ListBox>
3、ItemContainerStyle是控件子项的样式,在ListBox里即ListBoxItem的Style属性,只是在ListBox设ItemContainerStyle表示当前控件的所有子项都默认了这个style,它的格式就是对应子项控件的Style。
[html] view plaincopy
- <ListBox ItemContainerStyle="{StaticResource ListBoxItemStyle}">
- <ListBoxItem />
- <ListBoxItem />
- </ListBox>
与
[html] view plaincopy
- <ListBox >
- <ListBoxItem Style="{StaticResource ListBoxItemStyle}"/>
- <ListBoxItem Style="{StaticResource ListBoxItemStyle}"/>
- </ListBox>
等价,但是显然前者要方便很多。
4、ItemTemplate是控件子项的样式,说法和1里面的相同,用法和3里面的相同,即与子项的Template属性等价,但是这个显然也是比较方便的。
Template、ItemsPanel、ItemContainerStyle、ItemTemplate区别和联系相关推荐
- 对Strategy与Template Method模式的区别的一些讨论
准备抛弃自己原本在用的另一个blog了,开始把原本的一些文转过来. 这篇是[misc] 前两天与axx大聊天的一些记录. 转载开始: 10/02 2007, 星期二 主要是对Strategy与Temp ...
- Template,ItemsPanel,ItemContainerStyle ,ItemTemplate四个属性辨析
Template,ItemsPanel,ItemContainerStyle ,ItemTemplate四个属性辨析 ItemsControl,ListBox 等带有子项的控件四个重要属性解析: T ...
- ItemsControl 解析
先上个示例 <ItemsControl Margin="10" ItemsSource="{Binding}" Name="itemsContr ...
- 关于WPF中Popup中的一些用法的总结
原文:关于WPF中Popup中的一些用法的总结 Popup控件是一个常用的非常有用的控件,顾明思义就是弹出式控件,首先我们来看看MSDN对它的解释吧,表示具有内容的弹出窗口,这个是非常重要的控件,我们 ...
- C# wpf 使用ListBox实现尺子控件
文章目录 前言 一.如何实现? 1.设置横向ListBox 2.Item设为刻度样式 3.绑定数据源 二.完整代码 三.效果预览 总结 前言 尺子在客户端开发中有一定的应用场景,比如厘米尺.白板的画线 ...
- 使用ListBox控件,选中ListBoxItem中的TextBox后,如何改变SelectedItem
TextBox控件是一个比较特别的控件: 选中ListBoxItem中的TextBox后,如何改变ListBox的SelectedItem?这里写了一段简单的实例代码. <ListBox x:N ...
- WPF实现统计图(饼图仿LiveCharts)
WPF开发者QQ群: 340500857 | 微信群 -> 进入公众号主页 加入组织 欢迎转发.分享.点赞.在看,谢谢~. 01 - 效果预览 效果预览(更多效果请下载源码体验): 一.Pie ...
- WPF ListView展示层叠信息
原文:WPF ListView展示层叠信息 通常我们在ListView中展示一列同类数据,例如城市名称.不过可以对ListView的DataTemplate稍作修改,让其显示层叠信息.例如:需要在Li ...
- 沿环形路径创建渐变画笔
沿环形路径创建渐变画笔 <Windowx:Class="WpfApp5.MainWindow"xmlns="http://schemas.microsoft.com ...
最新文章
- C++接收字符串数组_C++模拟面试:从数组“紧凑”操作说开来
- 人工智能带来的事业浪潮或将提前到来
- 一文带你读懂边缘计算是什么
- Oracle编程入门经典 第7章 表
- EF中的Code First
- python输出子列表_python利用递归函数输出嵌套列表的每个元素
- Laravel短信mysql_使用 Laravel 实现阿里云短信服务队列
- Java经纬度坐标转换到平面坐标
- 双十一 马云的淘宝如何通过数据分析得到利润?
- [WCF编程]8.服务实例的生命周期
- cipher命令(转)
- gre 填空双选题目
- linux 上u盘打不开了,U盘打不开怎么办-八种方法汇总
- 【项目实战】——历史数据归档
- 目标检测YOLO实战应用案例100讲-基于深度学习的显著性目标检测研究与应用(论文篇)
- 代码管理和编辑工具Source Insight 4.0使用介绍
- 含并行连结的网络 GoogLeNet / Inception V3 动手学深度学习v2 pytorch
- 龙家贰少的MarkDown学习笔记
- jre包括jvm和java核心类库_包含JVM标准实现及Java核心类库
- 黑马程序员Java零基础视频教程(2022最新Java)B站视频学习笔记-Day15-阶段项目(拼图小游戏)(上篇)
热门文章
- 你绝对能看懂的Kafka源代码分析-RecordAccumulator类代码分析
- python程序控制homeassistant_Python pyps4-homeassistant包_程序模块 - PyPI - Python中文网
- 通讯录VCF格式批量生成
- conda 代理设置
- SpringMvc-maven-Mysql-ajax-bootsrap进行一个简单的web开发(大二下期末考试内容)
- 【迁移学习】Agile Domain Adaptation——一种平衡运算资源和速度的深度迁移学习方法
- PADS VX2.4在WIN10系统中菜单显示不全的解决方法
- 《火球——UML大战需求分析》(第3章 分析业务模型-类图)——3.6 考试管理系统(类图综合训练)
- mysql数据库下载 织梦本地安装教程_织梦本地环境包安装数据库管理界面phpMyAdmin...
- 测评 | 利用ONES Project实现2021年考研规划