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

ItemsControl.Items 属性

2013/12/13

获取用于生成控件内容的集合。

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

public ItemCollection Items { get; }
<itemsControl>
  oneOrMoreItems
</itemsControl>

XAML 值

oneOrMoreItems

一个或多个对象元素。

属性值

类型: System.Windows.Controls.ItemCollection
如果存在用于生成控件内容的集合,则为该集合;否则为 null。默认值为空集合。

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

下面的示例创建一个继承自 ItemsControlListBox,并向 Items 属性添加多种类型的对象。注意该示例不使用 <ListBox.Items><ItemCollection> 标记。可以将项作为直接子元素添加到 <ListBox> 或其他任何 ItemsControl


<ListBox xmlns:sys="clr-namespace:System;assembly=mscorlib">

  <sys:String>This is a string in a ListBox</sys:String>

  <Rectangle Height="40" Width="40"  Fill="Blue"/>

  <StackPanel Name="itemToSelect">
    <Ellipse Height="40" Fill="Blue"/>
    <TextBlock>Text below an Ellipse</TextBlock>
  </StackPanel>

  <TextBlock>String in a TextBlock</TextBlock>
</ListBox>


前面的示例生成类似于下图的输出。

具有多种类型对象的 ListBox

A ListBox that contains strings and UIElements.

下面的示例创建一个继承自 ItemsControlListBox,并向 Items 属性添加字符串。对于此示例,src 被定义为 xmlns:src="clr-namespace:ItemsControlSnippets"


  <StackPanel Grid.Column="0" xmlns:sys="clr-namespace:System;assembly=mscorlib">
    <StackPanel.Resources>
      <src:Items x:Key="items"/>
    </StackPanel.Resources>

    <ListBox Name="lb1" Margin="0,5,0,5" >
      <sys:String>Item 1</sys:String>
      <sys:String>Item 2</sys:String>
      <sys:String>Item 3</sys:String>
      <sys:String>Item 4</sys:String>
      <sys:String>Item 5</sys:String>
    </ListBox>
    <TextBlock Name="tb1" />
</StackPanel>


下面的示例循环访问上一个示例中 ListBoxItems 属性中的各个字符串,并将每个项添加到 TextBlock tb1 中。此外,它还更改 ListBox 中第一项的值。这是可行的,因为上一个示例向 Items 属性中添加项,而不是设置 ItemsSource 属性。


lb1.Items[0] = "Change this item";
System.Text.StringBuilder sb = new System.Text.StringBuilder();

foreach (object item in lb1.Items)
{
    sb.AppendLine(item.ToString());

}

tb1.Text = sb.ToString();


下面的示例创建一个 ListBox,并将 ItemsSource 属性设置为字符串集合。


<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

显示:
© 2014 Microsoft