none
Me sale siempre una fila de más RRS feed

  • Pregunta

  • Hola

    Estoy intentando mostrar una serie de datos en un datagrid y no se por qué siempre me sale una fila de más. Es decir, intento por ejemplo mostrar 3 filas cada una representando una entidad o clase Persona por ejemplo como esta

    public class Persona:INotifyPropertyChanged
        {

            public event PropertyChangedEventHandler PropertyChanged;

            protected void Notify(string propName)
            {
                if (this.PropertyChanged!=null)
                {
                    PropertyChanged(this, new PropertyChangedEventArgs(propName));
                }
            }

            private string _nombre;

            public string Nombre
            {
                get { return this._nombre; }
                set
                {
                    if (this._nombre == value)
                        return;
                    this._nombre = value;
                    Notify("Nombre");
                }
            }
        }

    en este datagrid

     <Grid>
            <StackPanel Name="sp_Datos">
                <DataGrid Name="dg_Centros" AlternatingRowBackground="Beige" 
                          AutoGenerateColumns="False"
                          VerticalScrollBarVisibility="Visible">
                    <DataGrid.Columns>
                        <DataGridTextColumn Header="Centro" Binding="{Binding Path=Nombre}" MinWidth="300"></DataGridTextColumn>


                        <DataGridTemplateColumn Header="Editar">
                            <DataGridTemplateColumn.CellTemplate>
                                <DataTemplate>
                                    <Button>...</Button>
                                </DataTemplate>
                            </DataGridTemplateColumn.CellTemplate>
                        </DataGridTemplateColumn>
                    </DataGrid.Columns>
                </DataGrid>
            </StackPanel>
        </Grid>

    Y lo hago al arrancar la Aplicación en el App.xamlcs

     public partial class App : Application
        {
            private void Application_Startup(object sender, StartupEventArgs e)
            {
                ObservableCollection<Persona> Lista = new ObservableCollection<Persona>();

                Lista.Add(new Persona() { Nombre = "item 1" });
                Lista.Add(new Persona() { Nombre = "item 2" });
                Lista.Add(new Persona() { Nombre = "item 3" });

                var Vista = new MainWindow();
                Vista.dg_Centros.ItemsSource = Lista;

                Vista.Show();

            }
        }

    Pero lo que veo yo es esto

    Y no logro hacer que desaparezca esa ultima fila que luego cuando intento tratar en un bucle el contenido del datagrid me da problemas por que está vacía y demás...

    Un  saludo


    kintela @esekintela

    martes, 17 de junio de 2014 8:33

Respuestas

  • Hola.

    Añade 

    CanUserAddRows="False"

    al datagrid


    No hay problema bajo el Sol que no tenga solución. Nunca una noche ha vencido a un amanecer.


    martes, 17 de junio de 2014 15:21
  • Hola, el problema es, que por defecto, el datagrid tiene la propiedad CanUserAddRows = "true". Esto hace que te añada una fila vacía por defecto(newitemplaceholder) para que el usuario pueda rellenarla.

    Si pones en el DataGrid la propiedad CanUserAddRows a "False" ya te debería funcionar correctamente.

    Saludos!!


    Víctor del Valle - http://www.vrdelvalle.net

    martes, 17 de junio de 2014 15:30

Todas las respuestas