首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ItemsControl、ItemsPanel和ItemsPresenter (Silverlight、XAML)

ItemsControl、ItemsPanel和ItemsPresenter (Silverlight、XAML)
EN

Stack Overflow用户
提问于 2010-09-16 13:15:13
回答 2查看 25K关注 0票数 21

我完全被这三个术语搞糊涂了,什么时候该用哪一个?它们是什么关系,是哪些控件的子控件?

这就是这棵树,这样说对吗?

ItemsControl > ItemsPresenter > ItemsPanel

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-09-16 18:51:32

从概念上讲,ItemsControl是一个包含项的控件。试着简单地把这个控件看作是零个或多个对象的持有者。

ItemsPresenter有点难以解释,但这是ItemsControl模板的一部分,它将定义项在其中的放置位置。你的ItemsControl的模板可以是你喜欢的任何东西,比如说一个周围有一些漂亮图片的网格,在这个模板中,你可以把ItemsPresenter放在你想要的任何地方,比如就在网格的中间。(本例取自msdn,为便于阅读,进行了简化)

代码语言:javascript
复制
<Style TargetType="HeaderedItemsControl">
  <Setter Property="Template">
    <Setter.Value>
      <ControlTemplate TargetType="{x:Type HeaderedItemsControl}">
          <Grid>
            <Rectangle Stroke="Black" Fill="Red"/>
            <ItemsPresenter Margin="2,0,0,0"/>
          </Grid>
      </ControlTemplate>
    </Setter.Value>
  </Setter>
</Style>

ItemsPanel是控制ItemsControl中项目布局的面板(或容器)。因此,如果您希望添加到ItemsControl中的项目以水平方式显示,那么您的项目面板可以是一个方向属性设置为horizotal的StackPanel。

这一切都说得通吗?

票数 37
EN

Stack Overflow用户

发布于 2011-06-09 19:01:36

我认为这很好地解释了Silverlight是如何完成这些工作的: ItemsPanelTemplate类:指定ItemsPresenter为ItemsControl的项目布局创建的面板。 ItemsPanelTemplate Class

代码语言:javascript
复制
 <Style TargetType="local:myItemsControl">
     <Setter Property="ItemsPanel">
        <Setter.Value>
            <ItemsPanelTemplate>
                <StackPanel Orientation="Vertical"/>
            </ItemsPanelTemplate>
        </Setter.Value>
     </Setter>
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="local:myItemsControl">
              ....
               <ItemsPresenter />
              ....

基本上,ItemPresenter (在模板中指定)将替换为在ItemsPanelTemplate中指定的任何内容。

因此,模板可以扩展为包含一个标头,并且所有的子项都将放在这个标头下:

代码语言:javascript
复制
<Grid> <TextBlock Text="Header"/>   <ItemsPresenter /> </Grid>
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3723893

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档