WPF-Datagrid leere Zeile unten


201

Ich binde mein Datagrid mit

//fill datagrid
public DataTable GameData
{
    get
    {
        DataSet ds = new DataSet();
        FileStream fs = new FileStream(IMDB.WebPage.Class.Config.XMLPath,
        FileMode.Open, FileAccess.Read);
        StreamReader reader = new StreamReader(fs, Encoding.Default);
        ds.ReadXml(reader);
        fs.Close();
        DataTable temp = ds.Tables[0];
        return ds.Tables[0];
     }
 }

Aus irgendeinem Grund bekomme ich unten eine leere Zeile. Und manchmal werden nach dem Klicken auf einige Schaltflächen und Kontrollkästchen im Raster weitere leere Zeilen hinzugefügt.

Warum ist das? Und wie blockiere ich das?

Antworten:


447

Klingt so, als hätten Sie CanUserAddRowsfür das DataGrid wahrscheinlich true festgelegt. Einfach hinzufügen

CanUserAddRows="false"

an die XAML.


13
Beachten Sie, dass Sie, selbst wenn das Kontrollkästchen in den Eigenschaften des Rasters deaktiviert ist, diese Codezeile explizit hinzufügen müssen, um die zusätzliche Zeile auszublenden (oder das Kontrollkästchen aktivieren und deaktivieren)
Tobias Valinski

6
Wenn Sie keinen Code hinter sich haben möchten, fügen Sie das Attribut CanUserAddRows = "False" hinzu. Es sieht aus wie ein Fehler in WPF, dass Sie ihn explizit auf false setzen müssen.
ZZZ

Ich habe eher das gegenteilige Problem. Es wird keine leere Zeile erstellt, während ich das lieber möchte.
Shimmy Weitzhandler

21

Es funktioniert auch mit dem Attribut:

IsReadOnly="true"

Dies funktionierte besser als CanUserAddRows & CanUserDeleteRows
RDV


3

Wenn Sie DataGrid im laufenden Betrieb über den Quellcode erstellen ...

DataGrid grid = new DataGrid();

grid.CanUserAddRows = false;

//... 
grid.AutoGenerateColumns = false;
grid.Margin = new Thickness(10,20,10,10);
grid.VerticalAlignment = VerticalAlignment.Top;
grid.ItemsSource = //... and so on

0

Obwohl das OP gefragt hat, wie die leere Zeile ENTFERNT werden soll, ist der Titel nicht spezifisch, und dieser Artikel erschien in meiner Suche, als ich versuchte herauszufinden, wie die leere Zeile hinzugefügt werden kann. Ich habe festgestellt, dass die leere Zeile nicht nur einen Standardkonstruktor haben muss, CanUserAddRows="True"sondern ItemsSourceauch einen Standardkonstruktor public MyClass () { }.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.