WPF datagrid fila vacía en la parte inferior


202

Ato mi cuadrícula de datos 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 alguna razón me sale una fila vacía en la parte inferior. Y a veces, después de hacer clic en algunos botones y casillas de verificación en la cuadrícula, se agregan más filas vacías.

¿Por qué es esto? ¿Y cómo bloqueo esto?

Respuestas:


448

Parece que probablemente haya CanUserAddRowsestablecido en verdadero para DataGrid. Solo agrega

CanUserAddRows="false"

a la XAML.


13
tenga en cuenta que incluso si la casilla de verificación en las propiedades de la cuadrícula no está marcada, debe agregar explícitamente esa línea de código para ocultar la fila adicional (o marcar y desmarcar la casilla de verificación)
Tobias Valinski

66
Si no desea código detrás, agregue el atributo CanUserAddRows = "False". Parece un error en WPF que tiene que configurarlo como falso explícitamente.
ZZZ

Prefiero tener el problema opuesto. No crea una fila vacía, mientras que preferiría eso.
Shimmy Weitzhandler

21

También funciona con el atributo:

IsReadOnly="true"

Esto funcionó mejor que CanUserAddRows & CanUserDeleteRows
RDV


3

Si está creando DataGrid sobre la marcha a través del código fuente ...

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

Aunque el OP preguntaba cómo ELIMINAR la fila vacía, el título no es específico, y este artículo apareció en mi búsqueda al intentar descubrir cómo AGREGAR la fila vacía. Descubrí que, para que aparezca la fila vacía, no solo debe tener CanUserAddRows="True"sino que también ItemsSourcedebe tener un constructor predeterminado public MyClass () { }.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.