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.
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ı EmployeeInfoDataSource
bir 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:
Denetimde ListView , ItemTemplateSelectorve ItemContainerStyle özelliklerini kullanınItemTemplate.
Denetimde ListViewItem ve ContentTemplateSelector özelliklerini kullanınContentTemplate.
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çinEmployeeInfoDataSource
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.
.NET Desktop feedback
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin