Nyelv

Lista nézet

A ListView vezérlő biztosítja az infrastruktúrát az adatelemek egy másik elrendezés vagy nézet használatával való megjelenítéséhez. Előfordulhat például, hogy egy táblában szeretné megjeleníteni az adatelemeket, és rendezni az oszlopait is.

A ListView a ListBox-ből származik. Az elemek általában egy adatgyűjtés tagjai, és objektumokként ListViewItem jelennek meg. A ListViewItem egy ContentControl, és csak egy gyermekelemet tartalmazhat. Ez a gyermekelem azonban bármilyen vizuális elem lehet.

Képernyőkép a Fájlinformációkat megjelenítő GridView-kimenettel rendelkező ListView-ról.

Megjegyzés:

A cikkben hivatkozott típusok a Kód hivatkozási szakaszában érhetők el.

Az alábbi táblázat a ListView vezérlőelem használatának gyakori feladatait sorolja fel:

Cím Description
GridView-oszlop rendezése fejlécre kattintáskor Megtudhatja, hogyan rendezheti a GridView oszlopot, ha egy fejlécre kattint.
Egyéni nézetmód létrehozása ListView-hoz Megtudhatja, hogyan hozhat létre egyéni nézetmódot a ListView-hoz.
Sablonok használata a GridView-t használó ListView stílusához Megtudhatja, hogyan használhat sablonokat a GridView-t használó ListView stílusához.
Stílus létrehozása egy mozgatott GridView oszlopfejléchez Megtudhatja, hogyan hozhat létre stílust egy húzott GridView-oszlopfejléchez.
ListView-tartalom megjelenítése GridView használatával Megtudhatja, hogyan jelenítheti meg a ListView-tartalmakat a GridView használatával.
Kijelölt elemek stílusa a ListView-ban eseményindítók használatával Megtudhatja, hogyan használhatja az eseményindítókat a kijelölt elemek stílusához a ListView-ban.
ListViewItems létrehozása jelölőnégyzettel Megtudhatja, hogyan hozhat létre ListViewItems-eket jelölőnégyzettel.
Adatok megjelenítése a GridViewRowPresenter használatával Megtudhatja, hogyan jeleníthet meg adatokat a GridViewRowPresenter használatával.
GridView-t implementáló Listanézet elemeinek csoportosítása Megtudhatja, hogyan csoportosíthat elemeket egy GridView-t implementáló ListView-ban.
Sor stílusa a GridView-t implementáló ListView-ban Megtudhatja, hogyan formázhat sorokat a GridView-t implementáló ListView-ban.
Oszlop vízszintes igazításának módosítása ListView-ban Megtudhatja, hogyan módosíthatja egy oszlop vízszintes igazítását a ListView-ban.
A ListView minden eleméhez tartozó MouseDoubleClick esemény kezelése Megtudhatja, hogyan kezelheti a ListView egyes elemeihez tartozó MouseDoubleClick eseményt.

Stílusok és sablonok

Módosíthatja az alapértelmezett beállítást ControlTemplate , hogy egyedi megjelenést adjon a vezérlőnek. További információ: Mik azok a stílusok és sablonok? és hogyan hozhat létre sablonokat vezérlőkhöz.

Tartalomtulajdonság

A ListView vezérlő a Items tulajdonságot használja tartalomtulajdonságként. Ez a tulajdonság lehetővé teszi a vezérlőelemben megjelenített elemek megadását.

Részek

A ListView vezérlő nem definiál elnevezett sablonrészeket.

Amikor létrehoz egy ControlTemplate egy ListView számára, előfordulhat, hogy a sablon tartalmaz egy ItemsPresenter-t egy ScrollViewer-en belül. A ItemsPresenter megjeleníti az egyes elemeket a ListViewvezérlőben, és ScrollViewer lehetővé teszi a görgetést a vezérlőn belül. Ha az ItemsPresenter nem a ScrollViewer közvetlen gyermeke, akkor a ItemsPresenter-nek nevet kell adnia, ItemsPresenter.

Vizualizációs állapotok

Az alábbi táblázat a vezérlőelem vizualizációs állapotát sorolja fel ListView .

VisualState név VisualStateGroup neve Description
Érvényes ÉrvényesítésiÁllapotok A vezérlő érvényes, és nem rendelkezik érvényesítési hibával.
InvalidFocused (ÉrvénytelenFókuszálás) ÉrvényesítésiÁllapotok A vezérlő érvényesítési hibával rendelkezik, és billentyűzetfókuszt használ.
ÉrvénytelenFókuszNélküli ÉrvényesítésiÁllapotok A vezérlő érvényesítési hibával rendelkezik, de nincs billentyűzetfókusza.

Az alábbi táblázat a vezérlőelem állapotait sorolja fel ListViewItem .

VisualState név VisualStateGroup neve Description
Normal CommonStates Az alapértelmezett állapot.
Disabled CommonStates A vezérlő le van tiltva.
Egér fölé húzás CommonStates Az egérmutató a vezérlő felett van.
Focused FocusStates A vezérlő billentyűzetfókuszt használ.
Fókuszálatlan FocusStates A vezérlő nem rendelkezik billentyűzetfókusszal.
Kiválasztott Kiválasztási Állapotok Az elem jelenleg ki van jelölve.
Nincs kiválasztva Kiválasztási Állapotok Az elem nincs kijelölve.
Kiválasztott, de nincs fókuszban Kiválasztási Állapotok Az elem ki van jelölve, de nincs billentyűzetfókusza.
Érvényes ÉrvényesítésiÁllapotok A vezérlő érvényes, és nem rendelkezik érvényesítési hibával.
InvalidFocused (ÉrvénytelenFókuszálás) ÉrvényesítésiÁllapotok A vezérlő érvényesítési hibával rendelkezik, és billentyűzetfókuszt használ.
ÉrvénytelenFókuszNélküli ÉrvényesítésiÁllapotok A vezérlő érvényesítési hibával rendelkezik, de nincs billentyűzetfókusza.

Megtekintési módok

A vezérlőelem tartalmának nézetmódjának ListView megadásához állítsa be a tulajdonságot View . A Windows Presentation Foundation (WPF) egyik nézetmódja a GridView, amely testreszabható oszlopokat tartalmazó táblázatban jelenít meg adatelemek gyűjteményét.

Az alábbi példa bemutatja, hogyan definiálhat olyan GridView vezérlőket ListView , amelyek az alkalmazottak adatait jelenítik meg.


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

Új nézetmódot hozhat létre úgy, hogy egy osztályt definiál, amely az ViewBase osztályból örököl. Az ViewBase osztály biztosítja az egyéni nézet létrehozásához szükséges infrastruktúrát. Az egyéni nézetek létrehozásáról további információt a ListView egyéni nézetmódjának létrehozása című témakörben talál.

Megosztási nézetmódok

Két ListView vezérlő egyszerre nem oszthatja meg ugyanazt a nézetmódot. Ha ugyanazt a nézetmódot egynél ListView több vezérlővel próbálja használni, kivétel történik. Ha olyan nézetmódot szeretne megadni, amelyet egyszerre többen ListViewis használhatnak, használjon sablonokat vagy stílusokat.

Adatkötés

A Items és ItemsSource tulajdonságokkal adhat meg elemeket egy ListView vezérlőhöz. Az alábbi példa a ItemsSource tulajdonságot egy úgynevezett EmployeeInfoDataSourceadatgyűjtésre állítja be.

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

GridViewEgy objektum GridViewColumn adott adatmezőkhöz kötődik. Az alábbi példa egy GridViewColumn objektumot egy adatmezőhöz köt egy tulajdonság megadásával 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"/>

A Binding részeként is megadhat egy DataTemplate definíciót, amellyel az oszlop celláit stílusozhatja. Az alábbi példában a DataTemplate által azonosított ResourceKey beállít egy Binding számára GridViewColumn-t. Vegye figyelembe, hogy ez a példa nem határozza meg a DisplayMemberBinding-t, mert ennek meghatározása előnyt jelentene a CellTemplate-hez képest.

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

A ListView vezérlők stílusa

A ListView vezérlő objektumokat tartalmaz ListViewItem , amelyek a megjelenített adatelemeket jelölik. Az adatelemek tartalmát és stílusát az alábbi tulajdonságok használatával határozhatja meg:

A cellák GridViewközötti igazítási problémák elkerülése érdekében ne adja meg a ItemContainerStyle tulajdonságokat, és ne adjon hozzá olyan tartalmat, amely befolyásolja egy elem ListViewszélességét. Igazítási probléma például akkor fordulhat elő, ha a Margin tulajdonságot a ItemContainerStyle fájlban állítja be. A tulajdonságok megadásához vagy az elemek GridView szélességét befolyásoló tartalom meghatározásához használja a GridView osztály és a kapcsolódó osztályok tulajdonságait, például a GridViewColumn. A használat GridView módjáról és az azt támogató osztályokról a GridView áttekintésében olvashat bővebben.

Ha definiál egy ItemContainerStyle egy ListView vezérlő számára, és definiál egy vezérlőt ItemTemplate is, a megfelelő működéshez be kell foglalnia egy ContentPresenter–t a stílusba annak érdekében, hogy a ItemTemplate megfelelően működjön.

Ne használja az HorizontalContentAlignment és VerticalContentAlignment tulajdonságokat ListView tartalom GridView általi megjelenítéshez. Ha meg szeretné adni a tartalom igazítását egy GridViewoszlopban, definiáljon egy CellTemplate.

Kódhivatkozás

Ebben a cikkben a következő objektumokra hivatkozunk:

  • EmployeeInfoDataSource adatgyűjtés. Ha Visual Basic .NET-et használ, az Window elem deklarálása kissé eltér a példakódban láthatótól:

    <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 osztályt, amelyet EmployeeInfoDataSource adatgyűjtéshez típusaként használnak.

    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
    

Lásd még