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

202

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, j'obtiens une ligne vide en bas. Et parfois, après avoir cliqué sur certains boutons et cases à cocher dans la grille, d'autres lignes vides sont ajoutées.

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

WtFudgE
la source

Réponses:

448

Il semble que vous ayez probablement CanUserAddRowsdéfini la valeur true pour le DataGrid. Il suffit d'ajouter

CanUserAddRows="false"

au XAML.

Tomi Junnila
la source
13
gardez à l'esprit que même si la case à cocher dans les propriétés de la grille n'est pas cochée, vous devez ajouter explicitement cette ligne de code pour masquer la ligne supplémentaire (ou cocher et décocher la case à cocher)
Tobias Valinski
6
Si vous ne voulez pas de code derrière, ajoutez l'attribut CanUserAddRows = "False". Il ressemble à un bogue dans WPF que vous devez définir explicitement sur false.
ZZZ
J'ai plutôt le problème inverse. Cela ne crée pas de ligne vide, alors que je préfère cela.
Shimmy Weitzhandler
21

Il fonctionne également avec l'attribut:

IsReadOnly="true"
Arti
la source
Cela a mieux fonctionné que CanUserAddRows et CanUserDeleteRows
RDV
3

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
Développeur web
la source
0

Bien que l'OP demandait comment SUPPRIMER la ligne vide, le titre n'est pas spécifique, et cet article est apparu dans ma recherche tout en essayant de comprendre comment AJOUTER la ligne vide. J'ai trouvé que, pour que la ligne vide apparaisse, elle doit non seulement avoir CanUserAddRows="True"mais aussi avoir ItemsSourcebesoin d'un constructeur par défaut public MyClass () { }.

Barre de fer
la source