web-dev-qa-db-fra.com

Ligne vide de la grille de données WPF en bas

Je lie ma grille de données en utilisant

//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];
     }
 }

Pour une raison quelconque, je reçois une ligne vide en bas. Et parfois, après avoir cliqué sur des boutons et des cases à cocher dans la grille, davantage de lignes vides sont ajoutées.

Pourquoi est-ce? Et comment puis-je bloquer cela?

185
WtFudgE

On dirait que vous avez probablement CanUserAddRows défini sur true pour le DataGrid. Il suffit d'ajouter

CanUserAddRows="false"

au XAML.

418
Tomi Junnila

Cela fonctionne aussi avec l'attribut:

IsReadOnly="true"
17
Arti

Si votre collection de sauvegarde qui implémente IEditableCollectionView renvoie true à partir de sa méthode CanAddNew, le DataGrid supposera que c'est ce que vous voulez faire.

Voici un bon aperçu: Aperçu des fonctionnalités d’édition du WPF DataGrid

13
Alastair Maw

Si vous créez DataGrid à la volée via le code source ...

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
3
Web Developer