Proyectos => Wave Engine => Mensaje iniciado por: Asier en 14 de Mayo de 2013, 08:36:51 pm

Título: Error al añadir entidades hijas a un grid
Publicado por: Asier en 14 de Mayo de 2013, 08:36:51 pm
Buenas!,

Tengo un error que no sé si es un fallo mío o un bug del motor. Pego un código que he simplificado al máximo pero suficiente para provocar el error. Quiero hacer un Grid y en tiempo de ejecución añadir columnas al grid y nuevos elementos a esas columnas.

Al ejecutar el código da un error típico de "Referencia a objeto no establecida como instancia de un objeto". Creo que el problema está en que el grid ya está inicializado cuando se va a añadir nuevas columnas y entidades hijas, porque lógicamente si creas un grid, añades las columnas que quieras y luego añades el grid a la escena funciona perfectamente.

Código: [Seleccionar]
public class MyScene : Scene
    {
        Grid Grid;

        protected override void CreateScene()
        {
            RenderManager.BackgroundColor = Color.CornflowerBlue;
           
            CreateGrid();
           
            Button button = new Button()
            {
                Text = "Grid Base",
                Width = 600,
                Height = 75,
                HorizontalAlignment = WaveEngine.Framework.UI.HorizontalAlignment.Center,
                VerticalAlignment = WaveEngine.Framework.UI.VerticalAlignment.Bottom,
                IsBorder = true
            };
           
            button.Click += button_Click;
            EntityManager.Add(button);           
        }

        void button_Click(object sender, EventArgs e)
        {           
            Grid.Width = Grid.Width + 100;
            Grid.ColumnDefinitions.Add(new ColumnDefinition() { Width = new GridLength(1f, GridUnitType.Proportional) });

            TextBlock child = new TextBlock()
            {
                Text = "Test"
            };                                                           
           
            child.SetValue(GridControl.RowProperty, 0);
            child.SetValue(GridControl.ColumnProperty, Grid.Entity.NumChildrens);
            Grid.Add(child);         
        }

        private void CreateGrid()
        {
            Grid = new Grid()
            {
                Width = 100,
                Height = 400,
                BackgroundColor = Color.Red,
                IsBorder = true
            };
            Grid.RowDefinitions.Add(new RowDefinition() { Height = new GridLength(1f, GridUnitType.Proportional) });
            Grid.ColumnDefinitions.Add(new ColumnDefinition() { Width = new GridLength(1f, GridUnitType.Proportional) });

            EntityManager.Add(Grid);
        }
    }

Muchas Gracias! un saludo