このトピックはまだ評価されていません - このトピックを評価する

ItemsControl.Items プロパティ

2013/12/12

コントロールのコンテンツを生成するのに使用されるコレクションを取得します。

Namespace:  System.Windows.Controls
アセンブリ:  System.Windows (System.Windows.dll 内)
XAML の XMLNS: xmlns にマップされていません。
public ItemCollection Items { get; }
<itemsControl>
  oneOrMoreItems
</itemsControl>

XAML 値

oneOrMoreItems

1 つ以上のオブジェクト要素。

プロパティ値

型: System.Windows.Controls.ItemCollection
存在する場合はコントロールのコンテンツの生成に使用されるコレクション。それ以外の場合は null。既定値は空のコレクションです。

ItemsControl には、Items プロパティに項目を追加するか、ItemsSource プロパティをデータ コレクションにバインドすることによって、項目を追加できます。Items には、さまざまな種類のオブジェクトを追加できます。ItemsSourcenull 以外の場合、Items プロパティの項目は読み取り専用になります。Items プロパティのオブジェクトを追加したり、オブジェクトに変更を加えたりすることはできません。

次の例では、ItemsControl を継承する ListBox を作成し、さまざまな種類のオブジェクトを 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.

次の例では、ItemsControl を継承する ListBox を作成し、文字列を Items プロパティに追加しています。この例では、srcxmlns: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 の最初の項目の値を変更しています。このようなことができるのは、前の例で、ItemsSource プロパティを設定するのではなく、Items プロパティに項目を追加したためです。


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

この情報は役に立ちましたか。
(残り 1500 文字)
フィードバックをいただき、ありがとうございました
表示:
© 2014 Microsoft. All rights reserved.