MSDN Library
정보
요청한 주제가 아래에 표시됩니다. 그러나 이 주제는 이 라이브러리에 포함되지 않습니다.

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

Items 속성에 항목을 추가하거나 ItemsSource 속성을 데이터 컬렉션으로 설정하여 ItemsControl에 항목을 추가할 수 있습니다. 여러 형식의 개체를 Items에 추가할 수 있습니다. ItemsSourcenull이 아니면 항목 속성의 항목은 읽기 전용입니다. 개체를 추가하거나 Items 속성의 개체를 변경할 수 없습니다.

ItemsSourceINotifyCollectionChanged 인터페이스를 구현하는 개체로 설정해야 컬렉션의 변경 내용이 ItemsControl에 반영됩니다. ObservableCollection<T> 클래스가 이러한 개체를 정의합니다.

다음 예제에서는 ItemsControl에서 상속되는 ListBox를 만들고 이를 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 속성을 문자열의 컬렉션으로 설정합니다. 이 예제의 경우 srcxmlns: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

표시:
© 2016 Microsoft