WPF DataGrid: Leere Zeile fehlt

7

Ich erstelle ein WPF-Fenster mit einem DataGrid , und ich möchte die leere Zeile "neues Element" am unteren Rand des Rasters anzeigen, die es mir erlaubt, ein neues Element zum Gitter hinzuzufügen. Aus irgendeinem Grund wird die leere Zeile nicht im Raster auf meinem Fenster angezeigt. Hier ist das Markup, das ich verwendet habe, um DataGrid zu erstellen:

%Vor%

Ich kann nicht herausfinden, warum die leere Zeile nicht angezeigt wird. Ich habe das offensichtliche Zeug probiert ( IsReadOnly="false" , CanUserAddRows="True" ), ohne Glück. Irgendeine Idee warum die leere Zeile deaktiviert ist? Danke für deine Hilfe.

    
David Veeneman 23.09.2009, 15:59
quelle

6 Antworten

4

Vincent Sibal hat eine Artikel, der beschreibt, was zum Hinzufügen neuer Zeilen zu einem DataGrid erforderlich ist . Es gibt einige Möglichkeiten, und die meisten davon hängen vom Typ der Sammlung ab, die Sie für SelectedProject.Tasks verwenden.

Ich würde empfehlen, dafür zu sorgen, dass "Tasks" keine schreibgeschützte Sammlung ist und eine der erforderlichen Schnittstellen unterstützt (wie im vorherigen Link erwähnt), damit neue Elemente mit DataGrid korrekt hinzugefügt werden können.

    
Reed Copsey 23.09.2009, 16:05
quelle
58

Sie müssen auch einen Standardkonstruktor für den Typ in der Sammlung haben.

    
user262596 30.01.2010 18:47
quelle
5

Endlich wieder zu diesem Thema. Ich werde die angenommene Antwort nicht ändern (grünes Häkchen), aber hier ist die Ursache des Problems:

Mein Ansichtsmodell umschließt Domänenklassen, um die von WPF benötigte Infrastruktur bereitzustellen. Ich schrieb einen CodeProject-Artikel für die von mir verwendete Umbruchmethode, die eine Sammlung enthält Klasse mit zwei Typparametern:

%Vor%

Dabei ist DM eine umschlossene Domänenklasse und DM ist die WPF-Klasse, die es umschließt.

Es führt aus, dass aus irgendeinem seltsamen Grund der WPT DataGrid mit dem zweiten Typparameter in der Auflistungsklasse nicht bearbeitet werden kann. Die Lösung besteht darin, den zweiten Typparameter zu eliminieren.

Ich kann nicht sagen, warum das funktioniert, nur dass es funktioniert. Hoffe es hilft jemand anderem auf der Straße.

    
David Veeneman 28.10.2009 13:10
quelle
5

Meiner Meinung nach ist das ein Fehler im DataGrid. Mike Blandfords Link half mir endlich zu realisieren, was Problem ist: Das DataGrid erkennt den Typ der Zeilen nicht, bis es ein reales Objekt gebunden hat. Die Bearbeitungszeile erscheint nicht b / c Das Datenraster kennt die Spaltentypen nicht. Sie würden denken, dass das Binden einer stark typisierten Sammlung funktioniert, tut es aber nicht.

Um die Antwort von Mike Blandford zu erweitern, müssen Sie zuerst die leere Sammlung zuweisen und dann eine Zeile hinzufügen und entfernen. Zum Beispiel

%Vor%     
Brett 06.09.2011 14:31
quelle
1

Fügen Sie Ihrer ItemsSource ein leeres Element hinzu und entfernen Sie es anschließend. Möglicherweise müssen Sie CanUserAddRows danach wieder auf "true" setzen. Ich lese diese Lösung hier : (Beiträge von Jarrey und Rick Roen)

Ich hatte dieses Problem, als ich die ItemsSource auf die DefaultView einer DataTable setzte und die Ansicht leer war. Die Spalten wurden zwar definiert, sollten aber in der Lage sein, sie zu bekommen. Heh.

    
Mike Blandford 27.11.2010 17:32
quelle
0

Für mich sieht der beste Weg zur Implementierung des bearbeitbaren asynchronen DataGrid folgendermaßen aus:

Modell anzeigen:

%Vor%

XAML :

%Vor%

Dieses Muster erlaubt es, mit dem Datenraster auf einfache Weise zu arbeiten, und auch der Code ist sehr einfach. Vergessen Sie nicht, einen Standardkonstruktor für die Klasse zu erstellen, die Ihre Datenquelle darstellt.

    
Mr.B 09.06.2016 07:51
quelle

Tags und Links