Aracılığıyla paylaş


ListView Genel Bakışı

Denetim, ListView içinde farklı bir düzen veya görünüm kullanarak veri öğeleri kümesini görüntülemek için altyapı sağlar. Örneğin, bir kullanıcı tablodaki veri öğelerini görüntülemek ve sütunlarını sıralamak isteyebilir.

Dekont

Bu makalede başvuruda bulunulan türler Kod başvurusu bölümünde bulunabilir.

ListView nedir?

, ListView 'den ListBoxtüretilir. Genellikle, öğeleri bir veri koleksiyonunun üyeleridir ve nesneler olarak ListViewItem temsil edilir. A ListViewItem , a'dır ContentControl ve yalnızca tek bir alt öğe içerebilir. Ancak bu alt öğe herhangi bir görsel öğe olabilir.

ListView için Görünüm Modu Tanımlama

Denetimin içeriği ListView için bir görünüm modu belirtmek için özelliğini ayarlarsınız View . Windows Presentation Foundation'ın (WPF) sağladığı bir görünüm modu, özelleştirilebilir sütunları olan bir tabloda veri öğeleri koleksiyonunu görüntüleyen modudur GridView.

Aşağıdaki örnekte, çalışan bilgilerini görüntüleyen bir ListView denetim için nasıl tanımlanacağı GridView gösterilmektedir.


<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>

Aşağıdaki çizimde, önceki örnekte verilerin nasıl göründüğü gösterilmektedir.

Screenshot that shows a ListView with GridView output.

Sınıfından ViewBase devralan bir sınıf tanımlayarak özel görünüm modu oluşturabilirsiniz. sınıfı, ViewBase özel görünüm oluşturmak için ihtiyacınız olan altyapıyı sağlar. Özel görünüm oluşturma hakkında daha fazla bilgi için bkz . ListView için Özel Görünüm Modu Oluşturma.

ListView'a Veri Bağlama

Denetim ListView öğelerini Items belirtmek için ve ItemsSource özelliklerini kullanın. Aşağıdaki örnek, özelliğini adlı EmployeeInfoDataSourcebir veri koleksiyonuna ayarlarItemsSource.

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

içindeGridViewGridViewColumn, nesneler belirtilen veri alanlarına bağlanır. Aşağıdaki örnek, özelliği için DisplayMemberBinding bir belirterek Binding bir GridViewColumn nesneyi veri alanına bağlar.

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"/>

Ayrıca, sütundaki BindingDataTemplate hücrelere stil uygulamak için kullandığınız tanımın bir parçası olarak da belirtebilirsiniz. Aşağıdaki örnekte, DataTemplate ile ResourceKey tanımlanan değeri için GridViewColumnöğesini Binding ayarlar. Bu örnekte öğesini tanımlamadığına DisplayMemberBinding dikkat edin çünkü bunu yapmak üzerinde CellTemplateönceliklidir.

<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 Uygulayan ListView Stili Oluşturma

Denetim ListView , görüntülenen veri öğelerini temsil eden nesneler içerir ListViewItem . Veri öğelerinin içeriğini ve stilini tanımlamak için aşağıdaki özellikleri kullanabilirsiniz:

içindeki GridViewhücreler arasında hizalama sorunlarını önlemek için özelliklerini ayarlamak veya içindeki bir öğenin ListViewgenişliğini etkileyen içerik eklemek için öğesini kullanmayınItemContainerStyle. Örneğin, içinde özelliğini ayarladığınızda MarginItemContainerStylebir hizalama sorunu oluşabilir. bir içindeki GridViewöğelerin genişliğini etkileyen özellikleri belirtmek veya içerik tanımlamak için sınıfının özelliklerini GridView ve gibi GridViewColumnilgili sınıflarını kullanın.

Nasıl kullanılacağı GridView ve destekleyici sınıfları hakkında daha fazla bilgi için bkz . GridView'a Genel Bakış.

Bir denetim için ListView bir ItemContainerStyle tanımlarsanız ve aynı zamanda bir ItemTemplatetanımlarsanız, öğesinin düzgün çalışması için stile ItemTemplate bir ContentPresenter eklemeniz gerekir.

tarafından GridViewgörüntülenen içerik için ListView ve VerticalContentAlignment özelliklerini kullanmayınHorizontalContentAlignment. bir sütunundaki içeriğin hizalamasını GridViewbelirtmek için bir CellTemplatetanımlayın.

Aynı Görünüm Modunu Paylaşma

İki ListView denetim aynı görünüm modunu aynı anda paylaşamaz. Aynı görünüm modunu birden ListView fazla denetimle kullanmaya çalışırsanız bir özel durum oluşur.

Birden ListViewfazla tarafından aynı anda kullanılabilecek bir görünüm modu belirtmek için şablonları veya stilleri kullanın.

Özel Görünüm Modu Oluşturma

gibi GridView özelleştirilmiş görünümler, nesne olarak ListViewItem temsil edilen ViewBase veri öğelerini görüntülemek için araçlar sağlayan soyut sınıftan türetilir.

Kod başvurusu

Bu makalede aşağıdaki nesnelere başvurulmlanmıştır:

  • EmployeeInfoDataSource veri toplama. Visual Basic .NET kullanıyorsanız, Window öğesi örnek kodda gördüklerinizden biraz farklı bildirilir:

    <Window x:Class="SDKSample.Window1"
            xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
            xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Loaded="OnLoad"
            xmlns:ds="clr-namespace:SDKSample">
    
        <Window.Resources>
            <ObjectDataProvider x:Key="EmployeeInfoDataSource" ObjectType="{x:Type ds:myEmployees}" />
        </Window.Resources>
    
  • EmployeeInfo sınıfı, veri toplama için EmployeeInfoDataSource tür olarak kullanılır.

    public class EmployeeInfo
    {
        private string _firstName;
        private string _lastName;
        private string _employeeNumber;
    
        public string FirstName
        {
            get {return _firstName;}
            set {_firstName = value;}
        }
    
        public string LastName
        {
            get {return _lastName;}
            set {_lastName = value;}
        }
    
        public string EmployeeNumber
        {
            get {return _employeeNumber;}
            set {_employeeNumber = value;}
        }
    
        public EmployeeInfo(string firstname, string lastname, string empnumber)
        {
            _firstName = firstname;
            _lastName = lastname;
            _employeeNumber = empnumber;
        }
    }
    
    Public Class EmployeeInfo
        Private _firstName As String
        Private _lastName As String
        Private _employeeNumber As String
    
        Public Property FirstName() As String
            Get
                Return _firstName
            End Get
            Set(ByVal value As String)
                _firstName = value
            End Set
        End Property
    
        Public Property LastName() As String
            Get
                Return _lastName
            End Get
            Set(ByVal value As String)
                _lastName = value
            End Set
        End Property
    
        Public Property EmployeeNumber() As String
            Get
                Return _employeeNumber
            End Get
            Set(ByVal value As String)
                _employeeNumber = value
            End Set
        End Property
    
        Public Sub New(ByVal firstname As String, ByVal lastname As String, ByVal empnumber As String)
            _firstName = firstname
            _lastName = lastname
            _employeeNumber = empnumber
        End Sub
    End Class
    

Ayrıca bkz.