Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
ListView denetimi, içinde farklı bir düzen veya görünüm kullanarak bir dizi veri öğesini 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.
Uyarı
Bu makalede atıfta bulunulan türler Kod referansı bölümünde bulunabilir.
ListView nedir?
ListView, ListBox'den türetilir. Genellikle, öğeleri bir veri koleksiyonuna dahildir ve ListViewItem nesneler olarak temsil edilir. ListViewItem bir ContentControl ve yalnızca tek bir alt öğe içerebilir. Ancak bu alt bileşen herhangi bir görsel öğe olabilir.
ListView için Görünüm Modu Tanımlama
ListView denetiminin içeriği için bir görünüm modu belirtmek için View özelliğini ayarlarsınız. Windows Presentation Foundation'ın (WPF) sağladığı bir görünüm modu GridView, özelleştirilebilir sütunları olan bir tablodaki veri öğeleri koleksiyonunu görüntüler.
Aşağıdaki örnekte, çalışan bilgilerini görüntüleyen bir GridView denetimi için 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>
Aşağıdaki çizimde, önceki örnekte verilerin nasıl göründüğü gösterilmektedir.
ViewBase sınıfından devralan bir sınıf tanımlayarak özel görünüm modu oluşturabilirsiniz. ViewBase sınıfı, ö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. ListViewiçin Özel Görünüm Modu Oluşturma.
ListView'a Veri Bağlama
Items denetimi için öğeleri belirtmek için ItemsSource ve ListView özelliklerini kullanın. Aşağıdaki örnek, ItemsSource özelliğini EmployeeInfoDataSource
adlı bir veri koleksiyonuna ayarlar.
<ListView ItemsSource="{Binding Source={StaticResource EmployeeInfoDataSource}}">
GridView GridViewColumn nesneleri belirtilen veri alanlarına bağlanır. Aşağıdaki örnek, GridViewColumn özelliği için bir Binding belirterek bir DisplayMemberBinding nesnesini 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"/>
Sütundaki hücrelere stil uygulamak için kullandığınız bir Binding tanımının parçası olarak da bir DataTemplate belirtebilirsiniz. Aşağıdaki örnekte, DataTemplate ile tanımlanan ResourceKey, Bindingiçin GridViewColumn'yi belirler. Bu örnekte DisplayMemberBinding tanımlanmadığına dikkat edin çünkü bunu yapmak CellTemplate'den ö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'e Stil Verme
ListView denetimi, görüntülenen veri öğelerini temsil eden ListViewItem nesneleri içerir. Veri öğelerinin içeriğini ve stilini tanımlamak için aşağıdaki özellikleri kullanabilirsiniz:
ListView denetiminde ItemTemplate, ItemTemplateSelectorve ItemContainerStyle özelliklerini kullanın.
ListViewItem denetiminde ContentTemplate ve ContentTemplateSelector özelliklerini kullanın.
GridViewhücreler arasında hizalama sorunlarını önlemek için, ItemContainerStyle özelliklerini ayarlamak veya ListViewbir öğenin genişliğini etkileyen içerik eklemek için kullanmayın. Örneğin, MarginItemContainerStyle özelliğini ayarladığınızda bir hizalama sorunu oluşabilir. bir GridViewiçindeki öğelerin genişliğini etkileyen özellikleri belirtmek veya içerik tanımlamak için GridView sınıfının ve GridViewColumngibi ilgili sınıflarının özelliklerini kullanın.
GridView ve destekleyici sınıflarını kullanma hakkında daha fazla bilgi için bkz. GridView'a Genel Bakış.
ItemContainerStyle denetimi için bir ListView tanımlarsanız ve aynı zamanda bir ItemTemplatetanımlarsanız, ContentPresenter düzgün çalışması için stile bir ItemTemplate eklemeniz gerekir.
HorizontalContentAlignmenttarafından görüntülenen VerticalContentAlignment içerik için ListView ve GridView özelliklerini kullanmayın. bir GridViewsütunundaki içeriğin hizalamasını belirtmek için bir CellTemplatetanımlayın.
Aynı Görünüm Modunu Paylaşma
İki ListView denetimi aynı görünüm modunu aynı anda paylaşamaz. Aynı görünüm modunu birden fazla ListView denetimiyle kullanmaya çalışırsanız bir özel durum oluşur.
Birden fazla ListViewtarafı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
GridView gibi özelleştirilmiş görünümler, ViewBase nesneler olarak temsil edilen veri öğelerini görüntülemek için araçlar sağlayan ListViewItem soyut sınıfından türetilir.
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ı,EmployeeInfoDataSource
veri toplama için 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
.NET Desktop feedback