导出 (0) 打印
全部展开
信息
您所需的主题如下所示。但此主题未包含在此库中。

ItemsControl.ItemsSource 属性

2013/12/13

获取或设置用于生成 ItemsControl 的内容的集合。

Namespace:  System.Windows.Controls
程序集:  System.Windows(位于 System.Windows.dll 中)
XMLNS for XAML: 未映射到 xmlns。

public IEnumerable ItemsSource { get; set; }
<itemsControl ItemsSource="bindingDeclaration"/>
-or-
<itemsControl ItemsSource="resourceReferenceToIEnumerable"/>

XAML 值

bindingDeclaration

使用 {Binding ....} 标记扩展的 Binding 声明。有关更多信息,请参见 Binding

resourceReferenceToIEnumerable

从资源集合对现有 IEnumerable 类型的对象进行的资源引用。资源引用必须通过键来指定所需的 IEnumerable

属性值

类型: System.Collections.IEnumerable
用于生成 ItemsControl 的内容的对象。默认值为 null

依赖项属性标识符字段: ItemsSourceProperty

可以向 ItemsControl 添加项,有两种方法:将这些项添加到 Items 属性,或者将 ItemsSource 属性设置为一个数据集合。可以向 Items 添加不同类型的对象。如果 ItemsSource 不为 null,则项属性中的项是只读的。您无法向 Items 属性添加对象,也无法更改该属性中的对象。

应将 ItemsSource 设置为实现 INotifyCollectionChanged 接口的对象,以使集合的更改在 ItemsControl 中反映出来。ObservableCollection<T> 类即定义这样的对象。

下面的示例创建一个继承自 ItemsControlListBox,并将它绑定到 Customer 对象的集合。此示例将 DisplayMemberPathProperty 设置为客户的 LastName 属性。因此,ListBox 显示以下值:

  • Anderberg

  • Ashton

  • Hicks

  • Pica


<Grid>
    <Grid.Resources>
        <src:Customers x:Key="customers"/>
    </Grid.Resources>
    <ListBox ItemsSource="{StaticResource customers}" Width="250" Margin="0,5,0,10" 
       DisplayMemberPath="LastName"  />
</Grid>


下面的示例演示 Customer 类和 ListBox 绑定到的集合。


public class Customer
{
    public String FirstName { get; set; }
    public String LastName { get; set; }
    public String Address { get; set; }

    public Customer(String firstName, String lastName, String address)
    {
        this.FirstName = firstName;
        this.LastName = lastName;
        this.Address = address;
    }

}

public class Customers : ObservableCollection<Customer>
{
    public Customers()
    {
        Add(new Customer("Michael", "Anderberg",
                "12 North Third Street, Apartment 45"));
        Add(new Customer("Chris", "Ashton",
                "34 West Fifth Street, Apartment 67"));
        Add(new Customer("Cassie", "Hicks",
                "56 East Seventh Street, Apartment 89"));
        Add(new Customer("Guido", "Pica",
                "78 South Ninth Street, Apartment 10"));
    }

}


下面的示例创建一个 ListBox,并将 ItemsSource 属性设置为字符串集合。对于此示例,src 被定义为 xmlns:src="clr-namespace:ItemsControlSnippets"


<StackPanel Grid.Column="1">
  <StackPanel.Resources>
    <src:Items x:Key="items"/>
  </StackPanel.Resources>

  <ListBox Name="lb2" ItemsSource="{Binding Source={StaticResource items}}"/>
  <TextBlock Name="tb2"/>
</StackPanel>


下面的示例循环访问上一个示例中 ListBoxItems 属性中的各个字符串,并将每个项添加到 TextBlock tb2 中。Items 属性包含 ListBox 绑定到的字符串集合。您可以使用 Items 属性获取这些字符串,但无法添加或更改字符串。


//lb2.Items[0] = "Change this item"; //Raises an exception.
System.Text.StringBuilder sb2 = new System.Text.StringBuilder();

foreach (object item in lb2.Items)
{
    sb2.AppendLine(item.ToString());

}

tb2.Text = sb2.ToString();


下面的示例演示 ListBox 绑定到的字符串的集合。


public class Items : 
    System.Collections.ObjectModel.ObservableCollection<string>
{
    public Items()
    {
        Add("Item 1");
        Add("Item 2");
        Add("Item 3");
        Add("Item 4");
        Add("Item 5");
    }
}


Windows Phone OS

受以下版本支持: 8.0, 7.1, 7.0

Windows Phone

显示:
© 2015 Microsoft