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?

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.


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"

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

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 () { }.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.