ListView 개요

ListView컨트롤은 여러 레이아웃 또는 뷰에서 데이터 항목 집합을 표시 하는 인프라를 제공 합니다. 예를 들어 사용자가 데이터 항목을 표에 표시하고 해당 열을 정렬해야 할 수도 있습니다.

ListView란?

ListView컨트롤은에서 파생 되는입니다 ItemsControl ListBox . 일반적으로 해당 항목은 데이터 컬렉션의 멤버 이며 개체로 표현 됩니다 ListViewItem . 는 이며 ListViewItem ContentControl 단일 자식 요소만 포함할 수 있습니다. 하지만 자식 요소는 모든 시각적 요소가 될 수 있습니다.

ListView의 뷰 모드 정의

컨트롤의 내용에 대 한 보기 모드를 지정 하려면 ListView 속성을 설정 View 합니다. 에서 제공 하는 뷰 모드 중 하나 WPF(Windows Presentation Foundation) 는 GridView 사용자 지정 가능한 열이 있는 테이블의 데이터 항목 컬렉션을 표시 하는입니다.

다음 예제에서는 GridView ListView 직원 정보를 표시 하는 컨트롤에 대해를 정의 하는 방법을 보여 줍니다.


<ListView ItemsSource="{Binding Source=
                       {StaticResource EmployeeInfoDataSource}}">

  <ListView.View>

    <GridView AllowsColumnReorder="true"
              ColumnHeaderToolTip="Employee Information">

      <GridViewColumn DisplayMemberBinding=
                          "{Binding Path=FirstName}" 
                      Header="First Name" Width="100"/>
        
                  <GridViewColumn DisplayMemberBinding=
                          "{Binding Path=LastName}" 
                      Width="100">
                      <GridViewColumnHeader>Last Name
                          <GridViewColumnHeader.ContextMenu>
                          <ContextMenu  MenuItem.Click="LastNameCM_Click"  
                                        Name="LastNameCM">
                              <MenuItem Header="Ascending" />
                              <MenuItem Header="Descending" />
                          </ContextMenu>
                          </GridViewColumnHeader.ContextMenu>
                      </GridViewColumnHeader>
                  </GridViewColumn>

                  <GridViewColumn DisplayMemberBinding=
                          "{Binding Path=EmployeeNumber}" 
                      Header="Employee No." Width="100"/>
    </GridView>

  </ListView.View>
</ListView>

다음 그림에서는 이전 예제의 데이터가 표시되는 방법을 보여 줍니다.

GridView를 출력 하는 ListView를 보여 주는 스크린샷

클래스에서 상속 되는 클래스를 정의 하 여 사용자 지정 보기 모드를 만들 수 있습니다 ViewBase . ViewBase클래스는 사용자 지정 뷰를 만드는 데 필요한 인프라를 제공 합니다. 사용자 지정 뷰를 만드는 방법에 대한 자세한 내용은 ListView의 사용자 지정 뷰 모드 만들기를 참조하세요.

ListView에 데이터 바인딩

Items및 속성을 사용 ItemsSource 하 여 컨트롤에 대 한 항목을 지정 ListView 합니다. 다음 예제에서는 속성을 ItemsSource 호출 되는 데이터 컬렉션으로 설정 합니다 EmployeeInfoDataSource .

<ListView ItemsSource="{Binding Source=
                       {StaticResource EmployeeInfoDataSource}}">

에서 GridView 개체는 GridViewColumn 지정 된 데이터 필드에 바인딩됩니다. 다음 예제에서는 GridViewColumn 속성에 대해를 지정 하 여 개체를 데이터 필드에 바인딩합니다 Binding DisplayMemberBinding .

GridViewColumn gvc1 = new GridViewColumn();
gvc1.DisplayMemberBinding = new Binding("FirstName");
gvc1.Header = "FirstName";
gvc1.Width = 100;
Dim gvc1 As New GridViewColumn()
gvc1.DisplayMemberBinding = New Binding("FirstName")
gvc1.Header = "FirstName"
gvc1.Width = 100
<GridViewColumn DisplayMemberBinding=
                    "{Binding Path=FirstName}" 
                Header="First Name" Width="100"/>

Binding DataTemplate 열에서 셀의 스타일을 지정 하는 데 사용 하는 정의의 일부로를 지정할 수도 있습니다. 다음 예제에서 DataTemplate 로 식별 되는는에 ResourceKey 대 한를 설정 합니다 Binding GridViewColumn . 이 예제에서는 DisplayMemberBinding 로 지정 된 바인딩을 재정의 하므로를 정의 하지 않습니다 DataTemplate .

<DataTemplate x:Key="myCellTemplateMonth">
  <DockPanel>
    <TextBlock Foreground="DarkBlue" HorizontalAlignment="Center">
      <TextBlock.Text>
        <Binding Path="Month"/>
      </TextBlock.Text>
    </TextBlock>
  </DockPanel>
</DataTemplate>
<GridViewColumn Header="Month" Width="80"
      CellTemplate="{StaticResource myCellTemplateMonth}"/>

GridView를 구현하는 ListView에 스타일 지정

ListView컨트롤에는 ListViewItem 표시 되는 데이터 항목을 나타내는 개체가 포함 되어 있습니다. 다음 속성을 사용하여 데이터 항목의 콘텐츠 및 스타일을 정의할 수 있습니다.

의 셀 간에 맞춤 문제가 발생 하지 않도록 하려면를 GridView 사용 하 여 ItemContainerStyle 속성을 설정 하거나의 항목 너비에 영향을 주는 내용을 추가 하지 마십시오 ListView . 예를 들어에서 속성을 설정 하면 맞춤 문제가 발생할 수 있습니다 Margin ItemContainerStyle . 의 항목 너비에 영향을 주는 속성을 지정 하거나 콘텐츠를 정의 하려면 GridView 클래스의 속성과와 GridView 같은 관련 클래스를 사용 GridViewColumn 합니다.

및 해당 지원 클래스를 사용 하는 방법에 대 한 자세한 내용은 GridView GridView 개요를 참조 하세요.

ItemContainerStyle컨트롤에 대해를 정의 ListView 하 고도 정의 하는 경우이 ItemTemplate ContentPresenter ItemTemplate 제대로 작동 하려면 스타일에를 포함 해야 합니다.

사용 하지 마십시오는 HorizontalContentAlignmentVerticalContentAlignment 속성에 대 한 ListView 사용 하 여 표시 되는 콘텐츠를 GridView입니다. 열에서 콘텐츠의 맞춤을 지정 하는 GridView, 정의 CellTemplate합니다.

같은 뷰 모드 공유

두 컨트롤은 동시에 ListView 같은 뷰 모드를 공유할 수 없습니다. 둘 이상의 컨트롤과 함께 동일한 뷰 모드를 사용 하려고 하면 ListView 예외가 발생 합니다.

둘 이상에서 동시에 사용할 수 있는 보기 모드를 지정 하려면 ListView 템플릿 또는 스타일을 사용 합니다.

사용자 지정 보기 모드 만들기

와 같은 사용자 지정 뷰는 GridView ViewBase 개체로 표시 되는 데이터 항목을 표시 하는 도구를 제공 하는 추상 클래스에서 파생 됩니다 ListViewItem .

참고 항목