in wpf datagrid Wie bekomme ich die leere Zeile an der Spitze? dh wenn der Benutzer eine neue Zeile hinzufügen möchte, kommt er immer unten. Aber ich will, dass es oben ist ... kann ich das in XAML machen?in wpf datagrid wie bekomme ich die leere Zeile an der Spitze?
Antwort
Diese Antwort hängt stark davon ab, wie Sie Ihr DataGrid binden, insbesondere was der zugrunde liegende Typ Ihrer ItemsSource ist. Diese Antwort setzt voraus, dass Sie eine ObservableCollection verwenden. Da Sie WPF speziell erwähnen, nehme ich auch an, dass Sie .NET 4.0 meinen, da das DataGrid nur in Silverlight 3 und .NET 4.0 verfügbar ist.
Ich gehe davon aus, dass Sie newing bis eine Reihe sind durch
AufrufItemSource.Add(new MyObject());
Um das Verhalten, das Sie wünschen, zu erhalten, verwenden Sie die folgende statt:
ItemSource.Insert(0, new MyObject());
Sie müssten Ihre eigene Vorlage schreiben für DataGrid, in dem Sie den NewItemPlaceholder-Teil oben auf dem Raster platzieren würden. Schauen Sie sich zuerst example an (obwohl das Beispiel nicht die Antwort ist, wird es Ihnen in die richtige Richtung zeigen).
Auf der Randnotiz kann ich fragen, warum müssten Sie NewItemPlaceholder an der Spitze haben? Es bricht den natürlichen Fluss von oben nach unten, den wir so gewohnt sind, wenn wir mit Listen/Gittern arbeiten.
Es mag intuitiver sein, wenn Sie im unteren Bereich die Option Neues Element und im Kontextmenü für das Gitter oder etwas in dieser Richtung die Option Element einfügen haben. Das ist natürlich nur meine Meinung.
Wenn Sie einen MMVM Ansatz verwenden, können Sie eine neue Zeile programmatisch hinzufügen:
var newEmp = new EmployeeViewModel(new EmployeeDto());
EmployeeList.Add(newEmp);
EmployeeList.Move(EmployeeList.IndexOf(newEmp), 0);
In meinem Beispiel ich eine EmployeeListViewModel bin mit einem ObservableCollection von EmployeeViewModels anzuzeigen.
Dann können Sie auch Tests für dieses Verhalten schreiben. Mehr Kontrolle als in XAML ....
/Johan
+1 saubere Lösung –
Was NewItemPlaceholderPosition.AtBeginning? Ich habe kein Codebeispiel, aber das scheint das zu sein, was Sie beschreiben. Sie könnten immer tun, was Johan vorschlägt, und die Elemente im Raster programmatisch verschieben oder sortieren.
Codebeispiel hinzugefügt von Ray Verbrennungen:
var view = CollectionView.GetDefaultCollectionView(EmployeeList)
as IEditableCollectionView;
if(view!=null)
view.NewItemPlaceholderPosition = NewItemPlaceholderPosition.AtBeginning;
Beachten Sie, dass diese 3.5 NET Framework benötigt oder höher.
Ausgezeichnete Antwort woodyiii (+1). Ich habe Code und einen Hinweis zur .NET Framework-Version hinzugefügt, um Ihre Antwort noch besser zu machen. –
.GetDefaultCollectionView ist keine Methode für die CollectionView-Klasse (4.0). Ist CollectionViewSource.GetDefaultView (Objekt) die gleiche Sache? – Michael
@RayBurns Bitte aktualisieren Sie den Code in Bezug auf .NET Framework. Der Code funktioniert nicht für v4 und höher. –
- 1. WPF DataGrid: Leere Zeile fehlt
- 2. WPF Datagrid leere Zeile am unteren
- 3. Wpf DataGrid neue Zeile hinzufügen
- 4. PowerShell WPF DataGrid: Exception ausgelöst committing leere Zeile
- 5. WPF DataGrid markieren gesamte Zeile
- 6. WPF DataGrid, streichen Sie die Zeile
- 7. Wie füge ich eine leere Zeile zum DataGrid hinzu?
- 8. Wie mache ich AdMob an der Spitze?
- 9. WPF Datagrid-Bindung an xml
- 10. Wie mache ich die Navigationsleiste immer an der Spitze?
- 11. WPF DataGrid fügt zusätzliche "Geister" -Zeile hinzu
- 12. Wie bekomme ich ein WPF DataGrid zum Speichern von Änderungen zurück in die Datenbank?
- 13. Get Wert von ausgewählten Zeile in WPF Datagrid
- 14. WPF-DataGrid-Steuerelement: neue Zeile einfügen
- 15. Flex Scrollen der Leinwand an die Spitze
- 16. wie die Datagrid-Spalte in WPF einzufrieren
- 17. C#/WPF: DataGrid - Letzte Zeile/Fußzeile möglich?
- 18. eine Zeile in die Spitze eines Tableview
- 19. Wie verankerte rotierte TextBlock an die Spitze?
- 20. WPF- Wie ausgewählter Zeilenindex in Datagrid erhalten?
- 21. Wie positioniere ich ein DataGridView auf eine bestimmte Zeile (so dass die ausgewählte Zeile an der Spitze ist)
- 22. WPF generisches DataGrid CellTemplate - an Zellwert binden?
- 23. Wie kann ich die Farbe einer ausgewählten Zeile in DataGrid
- 24. C# Wpf DataGrid Datenbindung an IOC Klasse
- 25. Wie erzeuge ich dynamisch Spalten in einem WPF DataGrid?
- 26. Binden eines WPF DataGrid an eine DataTable
- 27. WPF DataGrid DataTrigger-Bindung an DataContext-Eigenschaft
- 28. WPF DataGrid erlaubt dem Benutzer nicht, leere Zeilen hinzuzufügen
- 29. Auswählen eine zusätzliche leere Zeile, die nicht
- 30. WPF Zugang Datagrid in Tabs
Ooh nett .. tas one way .. aber das simuliert den add row effect ... du musst Eventhandler schreiben und alles verwalten ... ich kann das und danke für den Tipp. ich benutze .net 3.5 datagrid .. ich denke, es ist beta und ich mache es genau so, wie du es erwähnt hast .... andere Ideen? – kedar
Das DataGrid ist für .NET 3.5 verfügbar, wenn Sie das WPF-Toolkit installieren, das auf Codeplex verfügbar ist. – Dave