none
关于控件样式模板的几个概念很混乱 RRS feed

  • 问题

  • 对于ComboBox 、ListView、ListBox这些控件,有向个样式设置的概念,很是纠结。比如:

    <ListView ItemContainerStyle="" ItemsPanel="" ItemTemplate="" Template="" />
    <ListBox ItemContainerStyle=" " ItemsPanel="" ItemTemplate="" Template="/>"

    这四个样式模板有什么区别,以及在什么时候使用呢?四个模板有差别,但又说出差别到底是什么?还望大侠们指教一二啊!!

    2012年4月26日 7:08

答案

  • 这几个概念继承了WPF,Silverlight 对于列表控件的概念,所以你也可以参考阅读WPF, Silvelright关于这几个属性的说明。

    总体来说,一个列表控件,他会给每个项目(Item)一个包装体 (ItemContainer), 比如ListBox就是ListBoxItem, GridView就是GridViewItem, 通常微软会直接在列表控件的名字后加Item的那个类型就作为这个列表控件的包装体 (ItemContainer)。 所以你的第一个疑惑,ItemContainerStyle 就是这个包装体的样式。这个属性允许我们给他来定义一些样式。

    每个列表控件都要一个元素的排列方式定义,这个定义是通过布局元素来确定的,我们常见的布局元素有 StackPanel, WrapGrid, Grid等,这个布局元素都可以作为ItemsPanel的值。 ItemsPanel这个属新是来决定使用哪种布局元素来布局列表控件的各个元素。

    如果你使用了绑定数据源的方式来呈现列表控件,而不是直接指定ItemContainer在列表控件中,那我们就需要指定ItemTemplate, 他是用来给绑定的元素定义一种呈现模板(DataTemplate),比如我们邦定了一个 List<Person> 的集合到一个ListView, 那么ListView首先会根据有多少的元素去为每个元素生成一个 ItemContainer, 即ListViewItem,然后根据你指定的 ItemTemplate,生成相应的内容控件,把它放入对应的ListViewItem中,然后将ListViewItem放入对应的 ItemsPanel ,最后我们能看到的就是 一个ListView包含了一个ItemsPanel ,这个ItemsPanel 中有很多个ListViewItem, 每个ListViewItem中包含了其为绑定数据Person对象设计的 ItemTemplate。

    不知道是否可以理解,由于Metro资料有限,建议看看WPF 或者 Silverlight 相关的列表邦定的内容 ,他们和这里的是一致的。


    Bob Bao [MSFT]
    MSDN Community Support | Feedback to us

    2012年4月26日 9:18
    版主

全部回复

  • 这几个概念继承了WPF,Silverlight 对于列表控件的概念,所以你也可以参考阅读WPF, Silvelright关于这几个属性的说明。

    总体来说,一个列表控件,他会给每个项目(Item)一个包装体 (ItemContainer), 比如ListBox就是ListBoxItem, GridView就是GridViewItem, 通常微软会直接在列表控件的名字后加Item的那个类型就作为这个列表控件的包装体 (ItemContainer)。 所以你的第一个疑惑,ItemContainerStyle 就是这个包装体的样式。这个属性允许我们给他来定义一些样式。

    每个列表控件都要一个元素的排列方式定义,这个定义是通过布局元素来确定的,我们常见的布局元素有 StackPanel, WrapGrid, Grid等,这个布局元素都可以作为ItemsPanel的值。 ItemsPanel这个属新是来决定使用哪种布局元素来布局列表控件的各个元素。

    如果你使用了绑定数据源的方式来呈现列表控件,而不是直接指定ItemContainer在列表控件中,那我们就需要指定ItemTemplate, 他是用来给绑定的元素定义一种呈现模板(DataTemplate),比如我们邦定了一个 List<Person> 的集合到一个ListView, 那么ListView首先会根据有多少的元素去为每个元素生成一个 ItemContainer, 即ListViewItem,然后根据你指定的 ItemTemplate,生成相应的内容控件,把它放入对应的ListViewItem中,然后将ListViewItem放入对应的 ItemsPanel ,最后我们能看到的就是 一个ListView包含了一个ItemsPanel ,这个ItemsPanel 中有很多个ListViewItem, 每个ListViewItem中包含了其为绑定数据Person对象设计的 ItemTemplate。

    不知道是否可以理解,由于Metro资料有限,建议看看WPF 或者 Silverlight 相关的列表邦定的内容 ,他们和这里的是一致的。


    Bob Bao [MSFT]
    MSDN Community Support | Feedback to us

    2012年4月26日 9:18
    版主
  • 感谢...
    2012年4月27日 3:24