ListView – přehled
Ovládací ListView prvek poskytuje infrastrukturu pro zobrazení sady datových položek v jiném rozložení nebo zobrazení. Uživatel může například chtít zobrazit datové položky v tabulce a také řadit sloupce.
Poznámka:
Typy odkazované v tomto článku jsou k dispozici v části Odkaz na kód.
Co je ListView?
Odvozeno ListView od ListBox. Obvykle jsou jeho položky členy kolekce dat a jsou reprezentovány jako ListViewItem objekty. A ListViewItem je a ContentControl může obsahovat pouze jeden podřízený prvek. Tento podřízený prvek však může být libovolný vizuální prvek.
Definování režimu zobrazení pro ListView
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>
Následující obrázek ukazuje, jak se data zobrazují v předchozím příkladu.
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.
Vytvoření vazby dat k objektu ListView
K určení položek ListView ovládacího prvku použijte vlastnosti Items a ItemsSource vlastnosti. 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 množinou Binding pro .GridViewColumn Všimněte si, že tento příklad nedefinuje DisplayMemberBinding , protože to dělá 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 a ListView, který implementuje GridView
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 ItemTemplateItemTemplateSelector, a ItemContainerStyle vlastnosti.
Na ovládacím ListViewItem prvku použijte vlastnosti ContentTemplate a ContentTemplateSelector vlastnosti.
Chcete-li zabránit problémům se zarovnáním mezi buňkami v objektu GridView, nepoužívejte ItemContainerStyle k nastavení vlastností nebo přidejte obsah, který ovlivňuje šíř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.
HorizontalContentAlignment Nepoužívejte vlastnosti a VerticalContentAlignment vlastnosti pro ListView obsah zobrazený pomocí objektu GridView. Chcete-li určit zarovnání obsahu ve sloupci , GridViewdefinujte CellTemplate.
Sdílení stejného režimu zobrazení
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.
Vytvoření vlastního režimu zobrazení
Přizpůsobená zobrazení, jako GridView jsou odvozena z ViewBase abstraktní třídy, která poskytuje nástroje pro zobrazení datových položek reprezentovaných jako ListViewItem objekty.
Referenční dokumentace kódu
Na následující objekty se odkazuje v tomto článku:
EmployeeInfoDataSource
shromažďování dat. Pokud používáte visual basic .NET, je prvek deklarován mírně odlišně od toho,Window
co 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>
EmployeeInfo
třída, která se používá jako typ proEmployeeInfoDataSource
shromažď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
Váš názor
https://aka.ms/ContentUserFeedback.
Připravujeme: V průběhu roku 2024 budeme postupně vyřazovat problémy z GitHub coby mechanismus zpětné vazby pro obsah a nahrazovat ho novým systémem zpětné vazby. Další informace naleznete v tématu:Odeslat a zobrazit názory pro