DataGrid

Med DataGrid-kontrollen kan du visa och redigera data från många olika källor, till exempel från en SQL-databas, LINQ-fråga eller någon annan bindbar datakälla. Mer information finns i översikten över bindningskällor.

Skärmbild som visar en DataGrid-kontroll med rader med data.

Bindning till data

Om du vill binda DataGrid till data anger du ItemsSource egenskapen till en IEnumerable implementering. Varje rad i datarutnätet är bunden till ett objekt i datakällan och varje kolumn i datarutnätet är bunden till en egenskap för dataobjektet.

DataGrid För att användargränssnittet ska uppdateras automatiskt när objekt läggs till eller tas bort från källdata måste DataGrid vara bundna till en samling som implementerar INotifyCollectionChanged gränssnittet, till exempel en ObservableCollection<T>. För att automatiskt återspegla egenskapsändringar måste objekten i källsamlingen INotifyPropertyChanged implementera gränssnittet. Mer information finns i Översikt över databindning.

Kolumner kan visa text, kontroller, till exempel en ComboBox, eller något annat WPF-innehåll, till exempel bilder, knappar eller innehåll som finns i en mall. Du kan använda en DataGridTemplateColumn för att visa data som definierats i en mall. I följande tabell visas de kolumntyper som tillhandahålls som standard.

Genererad kolumntyp Datatyp
DataGridTextColumn String
DataGridCheckBoxColumn Boolean
DataGridComboBoxColumn Enum
DataGridHyperlinkColumn Uri

Generera kolumner automatiskt

Som standardinställning genererar DataGrid kontrollen kolumner automatiskt när du anger egenskapen ItemsSource. Vilken typ av kolumn som genereras beror på vilken typ av data i kolumnen som visas i föregående tabell.

När kolumner genereras automatiskt kan du hantera AutoGeneratingColumn händelsen för att anpassa eller avbryta kolumner innan de läggs till i DataGrid. Om du lägger till både användardefinierade kolumner och automatiskt genererade kolumner i DataGridläggs de användardefinierade kolumnerna till först. Om du vill ordna om visningsordningen för kolumnerna kan du ange DisplayIndex egenskapen för enskilda kolumner.

Du kan förhindra automatisk kolumngenerering genom att ange AutoGenerateColumns egenskapen till false. Detta är användbart om du vill skapa och konfigurera alla kolumner explicit.

Anpassade kolumner

Använd typen DataGridTemplateColumn för att definiera en anpassad kolumn om de inbyggda kolumntyperna inte uppfyller dina behov. Typen DataGridTemplateColumn innehåller CellTemplate och CellEditingTemplate egenskaper som gör att du kan ange innehållsmallar för både visnings- och redigeringslägen. Du kan till exempel definiera en anpassad kolumn för datum. CellTemplate Kan definiera ett TextBlock för att visa ett datum och CellEditingTemplate kan definiera en DatePicker kontroll för att redigera datumet.

Du kan använda Columns samlingen för att programmatiskt lägga till, infoga, ta bort och ändra alla kolumner i kontrollen vid körning. Kontrollera egenskapen IsAutoGenerated för att avgöra om en kolumn genereras automatiskt eller användardefinierad. Automatiskt genererade kolumner läggs till, tas bort eller återskapas automatiskt när ändringarna ItemsSource görs.

DataGrid kan anpassas i utseende, till exempel cellteckensnitt, färg och storlek. DataGrid stöder alla formaterings- och mallfunktioner i andra WPF-kontroller. DataGrid innehåller även standardbeteenden och anpassningsbara beteenden för redigering, sortering och validering.

Redigering

Som standard kan du redigera objekt direkt i DataGrid. För att garantera att redigeringar kan checkas in och avbrytas korrekt måste objekten i DataGrid implementera gränssnittet IEditableObject. Du kan också ställa in IsReadOnly-egenskapen till true för att inaktivera redigering i DataGrid.

DataGrid Har inbyggt stöd för följande redigeringskommandon:

Befallning Standardnyckel
BeginEditCommand F2
CancelEditCommand ESC
CommitEditCommand ENTER
DeleteCommand DELETE

Du placerar den aktuella cellen i redigeringsläge genom att klicka på den eller trycka på F2. En redigering på cellnivå checkas in när du flyttar till en annan cell på samma rad eller trycker på RETUR medan cellen är i redigeringsläge. Alla redigeringar i en rad checkas in när du flyttar till en annan rad eller trycker på RETUR medan raden är i redigeringsläge. Du avbryter en cellredigering genom att trycka på ESC en gång och avbryta alla ändringar i en rad genom att trycka på ESC två gånger. Mer information om hur man programmatiskt begår och avbryter redigeringar finns i metoderna BeginEdit, CommitEdit och CancelEdit.

CanUserAddRows Ange egenskaperna och CanUserDeleteRows för att ange om en användare kan lägga till eller ta bort rader. En användare kan ta bort markerade rader genom att trycka på DELETE-tangenten. Om egenskapen CanUserAddRows är inställd på trueläggs en ny objektrad till som den sista raden i DataGrid. Du kan ange standardvärden för nya objekt genom att hantera händelsen InitializingNewItem .

Anmärkning

Om redigeringsåtgärder tillåts påverkas av många faktorer, inklusive IsReadOnly tillståndet och IsEnabled för DataGrid, och om den underliggande datainsamlingen tillåter åtgärden.

Urval

Som standard markeras hela raden när en användare klickar på en cell i en DataGrid, och en användare kan välja flera rader. Du kan ange egenskapen SelectionUnit för att ange om en användare kan markera celler, fullständiga rader eller båda. Ange egenskapen SelectionMode för att ange om flera rader eller celler kan väljas, eller endast enstaka rader eller celler.

Du kan få information om de celler som har valts från egenskapen SelectedCells . Du kan få information om celler för vilka markeringen har ändrats i händelsen SelectedCellsChangedEventArgsSelectedCellsChanged. Anropa metoderna SelectAllCells eller UnselectAllCells för att programmatiskt markera eller avmarkera alla celler. Mer information finns i Standardbeteende för tangentbord och mus i DataGrid-kontrollen.

Gruppering, sortering och filtrering

Som standard kan du sortera objekt i en DataGrid genom att klicka på kolumnrubriken. Du kan anpassa sortering genom att hantera Sorting händelsen. Om du vill avbryta standardsortering anger du egenskapen Handled till true. Du kan också sortera källdata innan de visas i DataGrid.

Om du vill gruppera, sortera och filtrera data i DataGridbinder DataGrid du till en ICollectionView implementering som stöder dessa åtgärder. Sedan utför du åtgärderna i samlingsvyn. När objekt grupperas i DataGridkan du definiera en GroupStyle som anger utseendet på varje grupp. Du tillämpar GroupStyle genom att lägga till den i GroupStyle-samlingen för DataGrid. Om du har flera grupperingsnivåer kan du använda olika format på varje gruppnivå. Formatmallar tillämpas i den ordning de definieras. Mer information finns i Så här: Gruppera, Sortera och Filtrera data i DataGrid-kontrollen.

Validation

Möjliggör DataGrid att du kan verifiera både cell- och radnivå. Med validering på cellnivå verifierar du enskilda egenskaper för ett bundet dataobjekt när en användare uppdaterar ett värde. Med validering på radnivå validerar du hela dataobjekt när en användare checkar in ändringar i en rad. Du kan ge anpassad visuell feedback för valideringsfel på radnivå genom att ange RowValidationErrorTemplate egenskapen eller använda standardfelindikatorn. Skapa en anpassad verifieringsregel genom att skapa en klass som härleds från ValidationRule klassen och implementera Validate metoden. Lägg till den anpassade verifieringsregeln i RowValidationRules samlingen.

Vanliga uppgifter

I följande tabell visas några vanliga uppgifter för DataGrid och hur du utför dem. Genom att visa det relaterade API:et kan du hitta mer information och exempelkod.

Scenarium Tillvägagångssätt
Alternerande bakgrundsfärger Ange egenskapen AlternationCount till 2 eller fler och tilldela sedan en Brush till egenskaperna RowBackground och AlternatingRowBackground.
Definiera urvalsbeteende för celler och rader Ange egenskaperna SelectionMode och SelectionUnit.
Anpassa det visuella utseendet på rubriker, celler och rader Tillämpa en ny Style på egenskaperna ColumnHeaderStyle, RowHeaderStyle, CellStyleeller RowStyle.
Ange storleksalternativ Ange egenskaperna Height, MaxHeight, MinHeight, Width, MaxWidtheller MinWidth. Mer information finns i Storleksalternativ i DataGrid Control.
Få åtkomst till markerade objekt Kontrollera egenskapen SelectedCells för att hämta de markerade cellerna och egenskapen SelectedItems för att hämta de markerade raderna. Mer information finns i SelectedCells.
Anpassa slutanvändarinteraktioner Ange egenskaperna CanUserAddRows, CanUserDeleteRows, CanUserReorderColumns, CanUserResizeColumns, CanUserResizeRowsoch CanUserSortColumns.
Avbryta eller ändra automatiskt genererade kolumner Hantera händelsen AutoGeneratingColumn.
Låsa en kolumn Ange egenskapen FrozenColumnCount till 1 och flytta kolumnen till den position som är längst till vänster genom att ange egenskapen DisplayIndex till 0.
Använda XML-data som datakälla Binda ItemsSourceDataGrid till XPath-frågan som representerar samlingen med objekt. Skapa varje kolumn i DataGrid. Binda varje kolumn genom att ange XPath för bindningen till sökfrågan som hämtar egenskapen i objektkällan. Ett exempel finns i DataGridTextColumn.
Titel Beskrivning
DataGrid-element Beskriver de elementtyper som utgör DataGrid, inklusive DataGridCell, DataGridRow, DataGridRowHeader, DataGridColumnHeaderoch DataGridColumnHeadersPresenter.
Steg-för-steg-guide: Visa data från en SQL Server-databas i en DataGrid Control Beskriver hur du konfigurerar ett nytt WPF-projekt, lägger till ett Entity Framework-element, anger källan och visar data i en DataGrid.
Så här lägger du till radinformation i en DataGrid-kontroll Beskriver hur du skapar radinformation för en DataGrid.
Så här implementerar du verifiering med DataGrid-kontrollen Beskriver hur du validerar värden i DataGrid celler och rader och visar valideringsfeedback.
standardbeteende för tangentbord och mus i DataGrid-kontrollen Beskriver hur du interagerar med DataGrid-kontrollen med hjälp av tangentbordet och musen.
Så här: Gruppera, sortera och filtrera data i DataGrid-kontrollen Beskriver hur du visar data i en DataGrid på olika sätt genom att gruppera, sortera och filtrera data.
Storleksalternativ i DataGrid-kontrollen Beskriver hur du styr absolut och automatisk storleksändring i DataGrid.

Anpassning av DataGrid

Kontrollen DataGrid stöder vanliga alternativ för tabellformatering, till exempel alternerande radbakgrunder och möjligheten att visa eller dölja rubriker, stödlinjer och rullningslister. Kontrollen innehåller dessutom flera format- och mallegenskaper som du kan använda för att helt ändra kontrollens utseende och dess rader, kolumner, rubriker och celler.

Om du vill anpassa DataGrid beteendet kan du hantera händelser för markeringsändring, cellredigering och kolumnomordning. Dessutom tillgängliggör DataGrid flera händelser för återanvändning av rader som du kan hantera för att anpassa rader.

Använd DataGrid egenskapen för att tillämpa samma inställningar på flera Style kontroller. Du kan ändra standardvärdet ControlTemplate för att ge kontrollen ett unikt utseende. Mer information om hur du skapar en ControlTemplatefinns i Skapa en mall för en kontroll.

Beroendeegenskaper för den här kontrollen kan anges av kontrollens standardformat. Om en egenskap har antagits av en standardstil kan egenskapen ändras från sitt standardvärde när kontrollen visas i programmet. Standardformatet bestäms av vilket skrivbordstema som används när programmet körs.

Anmärkning

Att ange en visuell egenskap har bara en effekt om den egenskapen både finns i kontrollens standardmall och anges med hjälp av en TemplateBinding.

Formatmallar och stilar

I det här avsnittet beskrivs format och mallar för DataGrid kontrollen. Du kan ändra standardvärdet ControlTemplate för att ge kontrollen ett unikt utseende. Mer information finns i Formatering och mallar och Skapa en mall för en kontroll.

Innehållsegenskap

Kontrollen DataGrid använder ItemsSource egenskapen för att definiera datakällan. Datakällan kan vara valfri bindbar samling, till exempel en databas, LINQ-fråga eller någon annan bindbar datakälla.

Delar

Den här kontrollen definierar inga malldelar.

Visuella tillstånd

I följande tabell visas de visuella tillstånden DataGrid för kontrollen.

VisualState-namn VisualStateGroup-namn Beskrivning
Normalt CommonStates Kontrollen är i sitt normala tillstånd.
Disabled CommonStates Kontrollen är inaktiverad.
Giltigt ValidationStates Kontrollen är giltig och har inga verifieringsfel.
OgiltigFocus ValidationStates Kontrollen har ett verifieringsfel och har tangentbordsfokus.
OgiltigInteIFokus ValidationStates Kontrollen har ett verifieringsfel men har inte tangentbordsfokus.

DataGrid-elementtyper

Kontrollen DataGrid består av flera elementtyper. Information om dessa element och deras format och mallar finns i DataGrid-element.

Se även