ListView Genel Bakışı

ListViewDenetim, farklı düzende veya görünümlerde bir dizi veri öğesi göstermek için altyapıyı sağlar. Örneğin, bir Kullanıcı bir tablodaki veri öğelerini ve ayrıca sütunlarını sıralamak isteyebilir.

ListView nedir?

ListViewDenetim, öğesinden türetilmiş bir ' dır ItemsControlListBox . Genellikle, öğeleri bir veri koleksiyonunun üyeleridir ve nesneler olarak temsil edilir ListViewItem . ListViewItem, Bir ContentControl öğesidir 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 modunu tanımlama

Bir denetimin içeriği için bir görünüm modu belirtmek için ListViewView özelliğini ayarlarsınız. Windows Presentation Foundation (WPF) ' nin sağladığı bir görünüm modu GridView , özelleştirilebilir sütunları olan bir tablodaki veri öğelerinin koleksiyonunu görüntüleyen ' dır.

Aşağıdaki örnek, GridView çalışan bilgilerini görüntüleyen bir denetim için nasıl tanımlanacağını gösterir 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>

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

Screenshot that shows a ListView with GridView output.

Sınıfından devralan bir sınıfı tanımlayarak özel bir görünüm modu oluşturabilirsiniz ViewBase . ViewBaseSınıfı, özel bir görünüm oluşturmak için ihtiyaç duyduğunuz 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

ItemsItemsSource Bir denetimin öğelerini belirtmek için ve özelliklerini kullanın ListView . Aşağıdaki örnek, ItemsSource özelliğini çağrılan bir veri koleksiyonuna ayarlar EmployeeInfoDataSource .

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

' De GridView , GridViewColumn nesneler belirtilen veri alanlarına bağlanır. Aşağıdaki örnek, GridViewColumn özelliği için bir nesnesi belirterek bir nesneyi veri alanına bağlar BindingDisplayMemberBinding .

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, bir BindingDataTemplate sütundaki hücrelere stil eklemek için kullandığınız tanımın bir parçası olarak belirtebilirsiniz. Aşağıdaki örnekte, DataTemplate için bir kümesi olarak tanımlanır ResourceKeyBindingGridViewColumn . Bu örnek, DisplayMemberBinding tarafından belirtilen bağlamayı geçersiz kıldığından, bunu tanımlamaz 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 Uygulayan ListView 'u Stillendirme

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

İçindeki hücreler arasındaki hizalama sorunlarından kaçınmak için, GridViewItemContainerStyle özelliklerini ayarlamak veya içindeki bir öğenin genişliğini etkileyen içerik eklemek için kullanmayın ListView . Örneğin, içinde özelliği ayarladığınızda bir hizalama sorunu ortaya çıkabilir MarginItemContainerStyle . Özellikleri belirtmek veya içindeki öğelerin genişliğini etkileyen içerik tanımlamak için GridView , GridView sınıfının özelliklerini ve gibi ilgili sınıfları kullanın GridViewColumn .

Ve destekleyici sınıflarının kullanımı hakkında daha fazla bilgi için GridView bkz. GridView.

Bir ItemContainerStyle Denetim için tanımlar ListView ve ayrıca bir tanımlar ItemTemplate , doğru çalışması için stiline bir dahil etmeniz gerekir ContentPresenterItemTemplate .

HorizontalContentAlignmentVerticalContentAlignment Kullanılarak görüntülenen içerik için ve özelliklerini kullanmayın ListViewGridView . İçeriğinin bir sütununda hizalamasını belirtmek için GridView bir tanımlayın CellTemplate .

Aynı görünüm modunu paylaşma

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

Aynı anda birden fazla tarafından kullanılabilen bir görünüm modu belirtmek için ListView , şablonları veya stilleri kullanın.

Özel görünüm modu oluşturma

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

Ayrıca bkz.