Linha vazia do WPF datagrid na parte inferior

202

Eu vinculo meu datagrid usando

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

Por alguma razão, recebo uma linha vazia na parte inferior. E, às vezes, depois de clicar em alguns botões e caixas de seleção na grade, mais linhas vazias são adicionadas.

Por que é isso? E como faço para bloquear isso?

WtFudgE
fonte

Respostas:

448

Parece que você provavelmente CanUserAddRowsconfigurou como true para o DataGrid. Basta adicionar

CanUserAddRows="false"

para o XAML.

Tomi Junnila
fonte
13
manter em mente que, mesmo se a caixa de seleção nas propriedades da grelha está desmarcada você tem que adicionar explicitamente essa linha de código para esconder a linha adicional (ou marcar e desmarcar a caixa de verificação)
Tobias Valinski
6
Se você não quiser código, adicione o atributo CanUserAddRows = "False". Parece um bug no WPF que você precisa configurá-lo para false explicitamente.
ZZZ 31/12
Prefiro ter o problema oposto. Ele não cria uma linha vazia, enquanto eu preferiria isso.
Shimmy Weitzhandler 30/10/19
21

Também funciona com o atributo:

IsReadOnly="true"
Arti
fonte
Isso funcionou melhor do que CanUserAddRows e CanUserDeleteRows
RDV
3

Se você estiver criando DataGrid on-the-fly através do Código Fonte ...

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
Desenvolvedor Web
fonte
0

Embora o OP estivesse perguntando como REMOVER a linha vazia, o título não é específico, e este artigo apareceu na minha pesquisa enquanto tentava descobrir como ADD a linha vazia. Eu descobri que, para que a linha vazia apareça, ela não apenas precisa, CanUserAddRows="True"mas também ItemsSourceprecisa ter um construtor padrão public MyClass () { }.

Barra de ferro
fonte