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?

WtFudgE
quelle

Antworten:

447

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

CanUserAddRows="false"

an die XAML.

Tomi Junnila
quelle
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"
Arti
quelle
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
Web-Entwickler
quelle
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 () { }.

Eisenstange
quelle