Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Ovládací ListView prvek poskytuje infrastrukturu pro zobrazení sady datových položek pomocí jiného rozložení nebo zobrazení. Můžete například chtít zobrazit datové položky v tabulce a také seřadit její sloupce.
Odvozeno ListView od ListBox. Obvykle jsou jeho položky členy kolekce dat a jsou reprezentovány jako ListViewItem objekty. A ListViewItem je ContentControl a může obsahovat pouze jeden podřízený prvek. Tento podřízený prvek však může být libovolný vizuální prvek.
Poznámka:
Typy odkazované v tomto článku jsou k dispozici v části Odkaz na kód .
Následující tabulka obsahuje seznam běžných úloh pro práci s ovládacím prvku ListView:
| Title | Description |
|---|---|
| Řazení sloupce GridView po kliknutí na záhlaví | Zjistěte, jak seřadit sloupec GridView při kliknutí na záhlaví. |
| Vytvoření vlastního režimu zobrazení pro ListView | Zjistěte, jak vytvořit vlastní režim zobrazení pro ListView. |
| Použití šablon k vytvoření stylu Objektu ListView, který používá GridView | Naučte se používat šablony k formátování ListView, který používá GridView. |
| Vytvoření stylu pro přetaženou záhlaví sloupce GridView | Zjistěte, jak vytvořit styl pro přetaženou záhlaví sloupce GridView. |
| Zobrazení obsahu ListView pomocí GridView | Naučte se zobrazit obsah ListView pomocí GridView. |
| Použití triggerů ke stylování vybraných položek v ListView | Naučte se používat triggery ke stylu vybraných položek v ListView. |
| Vytvoření ListViewItems pomocí CheckBoxu | Zjistěte, jak vytvořit ListViewItems pomocí CheckBoxu. |
| Zobrazení dat pomocí GridViewRowPresenter | Zjistěte, jak zobrazit data pomocí GridViewRowPresenter. |
| Seskupte položky v Objektu ListView, který implementuje GridView | Zjistěte, jak seskupit položky v Objektu ListView, který implementuje GridView. |
| Stylování řádku v ListView, který implementuje GridView | Naučte se stylovat řádek v Objektu ListView, který implementuje GridView. |
| Změna vodorovného zarovnání sloupce v zobrazení ListView | Zjistěte, jak změnit vodorovné zarovnání sloupce v zobrazení ListView. |
| Zpracování události MouseDoubleClick pro každou položku v ListView | Zjistěte, jak zpracovat událost MouseDoubleClick pro každou položku v objektu ListView. |
Styly a šablony
Výchozí nastavení ControlTemplate můžete upravit tak, aby ovládací prvek získal jedinečný vzhled. Další informace najdete v tématu Co jsou styly a šablony? a Jak vytvořit šablonu pro ovládací prvek.
Vlastnost obsahu
Ovládací ListView prvek používá Items vlastnost jako jeho vlastnost obsahu. Tato vlastnost umožňuje zadat položky zobrazené v ovládacím prvku.
Součástky
Ovládací ListView prvek nedefinuje žádné pojmenované části šablony.
Při vytváření ControlTemplate pro ListView může vaše šablona obsahovat ItemsPresenter uvnitř ScrollViewer. Zobrazuje ItemsPresenter každou položku v ovládacím prvku ListView; ScrollViewer umožňuje posouvání v ovládacím prvku.
ItemsPresenter Pokud není přímým dítětem ScrollViewer, musíte dát ItemsPresenter jméno, ItemsPresenter.
Vizuální stavy
Následující tabulka uvádí vizuální stavy ListView ovládacího prvku.
| Název VisualState | Název skupiny VisualStateGroup | Description |
|---|---|---|
| Valid | StavyOvěření | Ovládací prvek je platný a nemá žádné chyby ověření. |
| Neplatný fokus | StavyOvěření | Ovládací prvek má chybu validace a klávesnicový fokus. |
| NeplatnýBezZaostření | StavyOvěření | Ovládací prvek má chybu ověření, ale nemá zaměření klávesnice. |
Následující tabulka uvádí stavy ListViewItem ovládacího prvku.
| Název VisualState | Název skupiny VisualStateGroup | Description |
|---|---|---|
| Normální | CommonStates | Výchozí stav. |
| Disabled | CommonStates | Ovládací prvek je zakázaný. |
| Mouseover | CommonStates | Ukazatel myši je nad ovládacím prvku. |
| Focused | FocusStates | Ovládací prvek má fokus klávesnice. |
| Nezaměřený | FocusStates | Ovládací prvek nemá fokus klávesnice. |
| Vybráno | SelectionStates | Položka je aktuálně vybraná. |
| Nevybráno | SelectionStates | Položka není vybraná. |
| VybránoMimoFokus | SelectionStates | Položka je vybraná, ale nemá fokus klávesnice. |
| Valid | StavyOvěření | Ovládací prvek je platný a nemá žádné chyby ověření. |
| Neplatný fokus | StavyOvěření | Ovládací prvek má chybu validace a klávesnicový fokus. |
| NeplatnýBezZaostření | StavyOvěření | Ovládací prvek má chybu ověření, ale nemá zaměření klávesnice. |
Režimy zobrazení
Chcete-li určit režim zobrazení pro obsah ListView ovládacího prvku, nastavte View vlastnost. Jeden režim zobrazení, který windows Presentation Foundation (WPF) poskytuje je GridView, který zobrazuje kolekci datových položek v tabulce, která má přizpůsobitelné sloupce.
Následující příklad ukazuje, jak definovat GridView pro ListView ovládací prvek, který zobrazuje informace o zaměstnanci.
<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>
Vlastní režim zobrazení můžete vytvořit definováním třídy, která dědí z ViewBase třídy. Třída ViewBase poskytuje infrastrukturu, kterou potřebujete k vytvoření vlastního zobrazení. Další informace o tom, jak vytvořit vlastní zobrazení, naleznete v tématu Vytvoření vlastního režimu zobrazení pro ListView.
Režimy zobrazení pro sdílení
Dva ListView ovládací prvky nemůžou současně sdílet stejný režim zobrazení. Pokud se pokusíte použít stejný režim zobrazení s více ovládacími ListView prvky, dojde k výjimce. Chcete-li určit režim zobrazení, který může být současně používán více než jedním ListView, použijte šablony nebo styly.
Datová vazba
Chcete-li určit položky pro ovládací prvek ListView, použijte vlastnosti Items a ItemsSource. Následující příklad nastaví ItemsSource vlastnost na kolekci dat s názvem EmployeeInfoDataSource.
<ListView ItemsSource="{Binding Source={StaticResource EmployeeInfoDataSource}}">
V objektech GridViewGridViewColumn jsou objekty vázány na zadaná datová pole. Následující příklad vytvoří vazbu objektu GridViewColumn na datové pole zadáním Binding vlastnosti DisplayMemberBinding .
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"/>
Můžete také zadat Binding jako součást DataTemplate definice, kterou použijete ke stylu buněk ve sloupci. V následujícím příkladu DataTemplate identifikovaný s ResourceKey nastaví Binding pro GridViewColumn. Všimněte si, že tento příklad nedefinuje DisplayMemberBinding, protože jeho definice má přednost před CellTemplate.
<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}"/>
Styling ListView – ovládací prvky
Ovládací ListView prvek obsahuje ListViewItem objekty, které představují datové položky, které jsou zobrazeny. K definování obsahu a stylu datových položek můžete použít následující vlastnosti:
- Na ovládacím ListView prvku použijte ItemTemplate, ItemTemplateSelector, a ItemContainerStyle vlastnosti.
- Na ovládacím ListViewItem prvku použijte vlastnosti ContentTemplate a ContentTemplateSelector.
Chcete-li zabránit problémům se zarovnáním mezi buňkami v objektu GridView, nepoužívejte ItemContainerStyle k nastavení vlastností ani nepřidávejte obsah, který má vliv na šířku položky v objektu ListView. Například k problému zarovnání může dojít při nastavení Margin vlastnosti v objektu ItemContainerStyle. Chcete-li zadat vlastnosti nebo definovat obsah, který ovlivňuje šířku položek v objektu GridView, použijte vlastnosti GridView třídy a jeho související třídy, například GridViewColumn. Další informace o použití GridView a jejích podpůrných tříd naleznete v tématu GridView Overview.
Pokud definujete ItemContainerStyle ovládací ListView prvek a také definujete ItemTemplate, musíte zahrnout ContentPresenter do stylu, aby ItemTemplate správně fungoval.
Nepoužívejte vlastnosti HorizontalContentAlignment a VerticalContentAlignment pro zobrazení obsahu ListView pomocí GridView. Chcete-li určit zarovnání obsahu ve sloupci GridView, definujte CellTemplate.
Referenční příručka kódu
Na následující objekty se odkazuje v tomto článku:
EmployeeInfoDataSourceshromažďování dat. Pokud používáte visual basic .NET, je prvek deklarován mírně odlišně od toho,Windowco vidíte v ukázkovém kódu:<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>EmployeeInfotřída, která se používá jako typ proEmployeeInfoDataSourceshromažďování dat.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
Viz také
.NET Desktop feedback