如何将List<string>绑定到ItemsControl?

19

在我的Presenter中,我有这个属性:

public List<string> PropertyNames { get; set; }

我想使用ItemsControl/DataTemplate列出名称,如下所示:

<ItemsControl ItemsSource="{Binding PropertyNames}">
    <ItemsControl.ItemTemplate>
        <DataTemplate>
            <TextBlock Text="{Binding Value}"/>
        </DataTemplate>
    </ItemsControl.ItemTemplate>
</ItemsControl>

由于通用列表没有命名属性,我该如何在绑定语句中引用

2个回答

43

让我来回答这个问题,它只是 {Binding}


12
注意,'.' 在使用时可以带上或不带上 'Path='。如果省略了,它会被默认为 '.'。因此,您可以写成 {Binding},{Binding .} 或 {Binding Path=.}。请注意,{Binding Path=} 将无法工作 - 这会导致 XAML 编译器错误。 - Kent Boogaart
4
哈哈。问题是在11:15提出的,一分钟后由同一个人回答。然后问题被接受了 :) 做得好。 - avepr

2
一个更简单的方法是直接使用以下代码:
<ItemsControl ItemsSource="{Binding PropertyNames}"/>

默认情况下,这将创建一个垂直的StackPanel,并将每个元素添加到自己的TextBlock中。根据MSDN的说明,这适用于以下任何一种情况:

  • 字符串。
  • DateTime对象。
  • UIElement对象。
  • 包含Ellipse和TextBlock的Panel控件。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接