Aracılığıyla paylaş


Liste Görünümü (ListView)

ListView kontrol bileşeni, veri öğeleri kümesini farklı bir düzen veya görünüm kullanarak görüntülemek için altyapı sağlar. Örneğin, bir tablodaki veri öğelerini görüntülemek ve sütunlarını sıralamak isteyebilirsiniz.

ListView ListBox'den türetilir. Öğeleri genellikle bir veri koleksiyonunun üyeleridir ve ListViewItem nesneleri olarak temsil edilir. A ListViewItem bir ContentControl'dir ve yalnızca tek bir alt öğe içerebilir. Ancak bu alt öğe herhangi bir görsel öğe olabilir.

Dosya bilgilerini görüntüleyen GridView çıktısı içeren ListView'ı gösteren ekran görüntüsü.

Uyarı

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

Aşağıdaki tabloda ListView denetimiyle çalışmaya yönelik yaygın görevler listelenmiştir:

Başlık Description
Başlığa Tıklanarak GridView Sütununu Sıralama Başlığa tıklandığında bir GridView sütununun nasıl sıralanacağını öğrenin.
ListView için Özel Görünüm Modu Oluşturma ListView için özel görünüm modu oluşturmayı öğrenin.
GridView Kullanan Bir ListView Stilini Oluşturmak için Şablonları Kullanma GridView kullanan bir ListView stilinde şablon kullanmayı öğrenin.
Sürüklenen GridView Sütun Üst Bilgisi için Stil Oluşturma Sürüklenen GridView sütun başlığı için stil oluşturmayı öğrenin.
GridView Kullanarak ListView İçeriğini Görüntüleme GridView kullanarak ListView içeriğini görüntülemeyi öğrenin.
ListView'da Seçili Öğelere Stil Eklemek için Tetikleyicileri Kullanma ListView'da seçili öğelere stil eklemek için tetikleyicileri kullanmayı öğrenin.
CheckBox ile ListViewItems Oluşturma CheckBox ile ListViewItems oluşturmayı öğrenin.
GridViewRowPresenter Kullanarak Verileri Görüntüleme GridViewRowPresenter kullanarak verileri görüntülemeyi öğrenin.
GridView Uygulayan ListView'da Öğeleri Gruplandırma GridView uygulayan bir ListView'da öğeleri gruplandırmayı öğrenin.
GridView Uygulayan ListView'da Satır Stili Oluşturma GridView uygulayan ListView'da bir satıra nasıl stil uygulayacağınızı öğrenin.
ListView içinde Bir Sütunun Yatay Hizalamasını Değiştirme ListView'da bir sütunun yatay hizalamasını değiştirmeyi öğrenin.
ListView'daki Her Öğe için MouseDoubleClick Olayını İşleme ListView'daki her öğe için MouseDoubleClick olayını işlemeyi öğrenin.

Stiller ve şablonlar

Denetime benzersiz bir görünüm vermek için varsayılanı ControlTemplate değiştirebilirsiniz. Daha fazla bilgi için bkz. Stiller ve şablonlar nedir? ve Denetim için şablon oluşturma.

İçerik özelliği

Denetim ListView, içerik özelliği olarak Items özelliğini kullanır. Bu özellik, denetimde görüntülenen öğeleri belirtmenize olanak tanır.

Parçalar

Denetim ListView adlandırılmış şablon parçaları tanımlamaz.

ControlTemplate oluşturduğunuzda bir ListView için, şablonunuz içinde bir ItemsPresenter ve bir ScrollViewer içerebilir. ItemsPresenter her öğeyi ListView içinde görüntüler; ScrollViewer ile denetim içerisinde kaydırma yapılmasını sağlar. öğesinin ItemsPresenter doğrudan alt öğesi ScrollViewerdeğilse, adını ItemsPresentervermelisinizItemsPresenter.

Görsel durumlar

Aşağıdaki tabloda denetimin görsel durumları listelenmiştir ListView .

VisualState Adı VisualStateGroup Adı Description
Geçerli DoğrulamaDurumları Denetim geçerli ve doğrulama hatası yok.
GeçersizOdaklı DoğrulamaDurumları Kontrol öğesinde doğrulama hatası var ve klavye odağı bulunuyor.
InvalidUnfocused DoğrulamaDurumları Denetimde doğrulama hatası var ancak klavye odağı yok.

Aşağıdaki tabloda ListViewItem denetiminin durumları listelenir.

VisualState Adı VisualStateGroup Adı Description
Sıradan OrtakDurumlar Varsayılan durum.
Disabled OrtakDurumlar Denetim devre dışı bırakıldı.
Mouseover OrtakDurumlar Fare işaretçisi kontrolün üzerindedir.
Focused FocusStates Denetimin klavye odağı vardır.
Odaklanmamış FocusStates Kontrolün klavye odağı yoktur.
Seçilmiş Seçim Durumları Öğe şu anda seçili.
Seçili değil Seçim Durumları Öğe seçilmedi.
SeçiliOdaklanmamış Seçim Durumları Öğe seçili ancak klavye odağı yok.
Geçerli DoğrulamaDurumları Denetim geçerli ve doğrulama hatası yok.
GeçersizOdaklı DoğrulamaDurumları Kontrol öğesinde doğrulama hatası var ve klavye odağı bulunuyor.
InvalidUnfocused DoğrulamaDurumları Denetimde doğrulama hatası var ancak klavye odağı yok.

Görünüm modları

Denetim ListView içeriği için bir görünüm modu belirtmek amacıyla, View özelliğini ayarlayın. 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, bir GridView denetim için çalışan bilgilerini görüntüleyen ListView nasıl tanımlanacağı 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>

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.

Görünüm modlarını 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.

Veri bağlama

Items ve ItemsSource özelliklerini kullanarak bir ListView denetimi için öğeleri belirtin. Aşağıdaki örnek, ItemsSource özelliğini EmployeeInfoDataSource adlı bir veri koleksiyonuna ayarlar.

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

Bir GridView, GridViewColumn nesneler belirtilen veri alanlarına bağlanır. Aşağıdaki örnek, DisplayMemberBinding özelliği için Binding belirterek 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 hücrelere stil uygulamak için kullandığınız DataTemplate tanımının bir parçası olarak bir Binding belirtebilirsiniz. Aşağıdaki örnekte, DataTemplate ile ResourceKey tanımlanan değeri için Bindingöğesini GridViewColumn ayarlar. Bu örnekte DisplayMemberBinding öğesi tanımlanmamıştır çünkü CellTemplate üzerinde önceliğe sahiptir.

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

ListView denetimlerini şekillendirme

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:

Bir GridView içindeki hücreler arasında hizalama sorunlarını önlemek için bir öğenin genişliğini etkileyen özellik ayarlanması veya içerik eklenmesi için ItemContainerStyle kullanmayın. Örneğin, Margin özelliğini ItemContainerStyle içinde ayarladığınızda bir hizalama sorunu oluşabilir. GridView içindeki öğelerin genişliğini etkileyen özellikleri belirtmek veya içerik tanımlamak için GridView sınıfının ve ilgili sınıflarının, örneğin GridViewColumn, özelliklerini 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 ItemContainerStyle bir ListView tanımlarsanız ve aynı zamanda bir ItemTemplate tanımlarsanız, ItemTemplate öğesinin düzgün çalışması için stile ContentPresenter eklemeniz gerekir.

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

Kod referansı

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 bakınız