分类: WPF2011-10-12 10:13 4716人阅读 评论(0) 收藏 举报

先来看一张图(网上下的图,加了几个字)

实在是有够“乱”的,慢慢来理一下;

1、Template是指控件的样式

在WPF中所有继承自contentcontrol类的控件都含有此属性,(继承自FrameworkElementdl类的TextBlock等控件无)。Template用于定义控件结构(Visual Tree),和Style有点容易混淆,每个控件初始没有Style属性,而在WPF中所有的控件都有默认的Template。Style也做样式解释,但是它改变的只是控件原来的属性,比如长宽颜色之类的,而Template可以改变控件的形状外形,还可以根据需要往里面添加其他的控件来丰富当前的控件。Style可以用来定义一定范围内的所有对应控件的样式,所以平时多为两者结合使用。

  1. <Style x:Key="ListBoxStyle1" TargetType="ListBox">
  2. <Setter Property="Background" Value="#FFFFFFFF"/>
  3. <Setter Property="Template">
  4. <Setter.Value>
  5. <ControlTemplate TargetType="ListBox">
  6. //............相关代码
  7. </ControlTemplate>
  8. </Setter.Value>
  9. </Setter>
  10. </Style>

2、ItemsPanel是指控件的子项的布局样式,只有那些有item的控件才有此属性,如ListBox ,Combox,TreeView,DataGrid,TabelControl等,后面的两个也是如此。

eg:在不做设置的时候,ListBox的Item子项是纵向排列的,但是可以通过设置ItemPanell来实现横向排列或者其他更复杂的排列方式。

  1. <ListBox >
  2. <ListBox.ItemsPanel>
  3. <ItemsPanelTemplate>
  4. <VirtualizingStackPanel Orientation="Horizontal"/>//横向排列
  5. </ItemsPanelTemplate>
  6. </ListBox.ItemsPanel>
  7. </ListBox>

3、ItemContainerStyle是控件子项的样式,在ListBox里即ListBoxItem的Style属性,只是在ListBox设ItemContainerStyle表示当前控件的所有子项都默认了这个style,它的格式就是对应子项控件的Style。

  1. <ListBox  ItemContainerStyle="{StaticResource  ListBoxItemStyle}">
  2. <ListBoxItem />
  3. <ListBoxItem />
  4. </ListBox>

  1. <ListBox >
  2. <ListBoxItem  Style="{StaticResource  ListBoxItemStyle}"/>
  3. <ListBoxItem  Style="{StaticResource  ListBoxItemStyle}"/>
  4. </ListBox>

等价,但是显然前者要方便很多。

4、ItemTemplate是控件子项的样式,说法和1里面的相同,用法和3里面的相同,即与子项的Template属性等价,但是这个显然也是比较方便的。

Template、ItemsPanel、ItemContainerStyle、ItemTemplate(包括ListBox的Item子项是横向排列)的更多相关文章

  1. [WP8] ListBox的Item宽度自动填满

    [WP8] ListBox的Item宽度自动填满 范例下载 范例程序代码:点此下载 问题情景 开发WP8应用程序的时候,常常会需要使用ListBox作为容器来呈现各种数据集合.但是在ListBox呈现 ...

  2. 007. 自定义ListBox的item的宽高, 字体居中

    /// <summary> /// 自定义ListBox的item的宽高, 字体居中 /// </summary> /// <param name="sende ...

  3. WPF listbox中Checkbox横向排列

    <ListBox Height="220" Margin="0" ItemsSource="{Binding RightCollection}& ...

  4. wpf之ListBox中ListBoxItem横向排列

    ListBox中ListBoxItem默认是纵向排列,可以通过自定义样式,让其横向排列, 如下Demo: XAML: <Window x:Class="ListBoxItemStyle ...

  5. WPF ListBox 横向排列

    WPF ListBox 横向排列   如果只是单纯的让ListBox可以横向配列,这样很简单,只需要更改ListBox的ItemsPanel模板就可以,例如: <ListBox><L ...

  6. C#ListBox对Item进行重绘,包括颜色

    别的不多说了,上代码,直接看 首先设置这行,或者属性窗口设置,这样才可以启动手动绘制,参数有三个 Normal: 自动绘制 OwnerDrawFixed:手动绘制,但间距相同 OwnerDrawVar ...

  7. 【WPF】修改ListBox的Item的样式

    <ListBox> <!-- 数据 --> <ListBoxItem>AAAA</ListBoxItem> <ListBoxItem>BB& ...

  8. 【WPF】设置ListBox容器Item的流式布局

    需求:像下图那样显示把一组内容装入ListBox中显示.要求用WrapPanel横向布局,顺序如图中的数字. 问题:ListBox默认的布局是从上往下单列的,所以需要设置布局. <ListBox ...

  9. 设置ListBox的Item的样式

    <ListBox.ItemContainerStyle>                <Style TargetType="Control">       ...

随机推荐

  1. Maven国内高速镜像

    大家都知道国外Maven中央仓库下载jar 没谁了速度, 给大家分享个国内666的Maven镜像 阿里云Maven镜像  希望能帮到大家: 配置下setting.xml即可: <mirrors& ...

  2. MySql 的备份与恢复

    1. 数据库导出 SQL 脚本 mysqldump -u 用户名 -p 密码 数据库名称>生成的脚本文件路径 示例: mysqldump -uroot -p 123 mydb1>/User ...

  3. Python— 匿名函数

    匿名函数 匿名函数:为了解决那些功能很简单的需求而设计的  “一句话函数” #初始代码 def calc(n): return n**n print(calc(10)) #换成匿名函数 calc = ...

  4. Python获取主机名

    import socket print socket.gethostname()

  5. Spring Cloud架构

    Spring Cloud主要的组件,以及它的访间流程  1.外部或者内部的非 Spring Cloud目都统一通过API网关(Zuul)来访可内部服务.  2.网关接收到请求后,从注册中心( Eure ...

  6. SSH终端显示中文乱码

    出现这种关系,首先想到是因为字符集不匹配导致的.打开SSH客户端,连接到linux虚拟机 在虚拟机中输入#cd /etc#cd sysconfig/ 找到i18ncat i18n 会显示当前的编码类型 ...

  7. 字符串之strchr

    功能:查找字符在字符串中第一次出现的位置. #include <iostream> #include <assert.h> using namespace std; char ...

  8. C语言转义字符的使用方法

    cppreference.com -> 转义字符 常量转义字符 以下的转义字符使普通字符表示不同的意义. 转义字符 描述 \' 单引号 \" 双引号 \\ 反斜杠 \0 空字符 \a ...

  9. Eclipse Find/Replace

    1.Eclipse内容助手 选中Regular expressions,使用正则表达式进行匹配.图中出现了小黄灯,Ctrl+Space显示出帮助信息. 2.Wrap search(循环检索)选中后,检 ...

  10. 利用FFmpeg将RTSP转码成RTMP发布在RED5

    安装jdk,并设置环境  from:http://www.w3c.com.cn/%E5%88%A9%E7%94%A8ffmpeg%E5%B0%86-ipcamera-%E7%9A%84rtsp%E8% ...