none
Cargar grilla en silverlight RRS feed

  • Pregunta

  • Hola

    Tengo lo siguiente en cuanto interfaces y clases:

    class ElementComposed
        {
            public object Id { get; set; }
            public object Value { get; set; }
    
            public ElementComposed()
            {
                Id = new object();
                Value = new object();
            }
        }
    
        public interface IColumn
        {
            object Id { get; set; }
        }
    
        class CustomColumns : DataGridCheckBoxColumn, IColumn
        {
            public object Id { get; set; }
    
            public CustomColumns()
                : base()
            {
    
            }
    
            public CustomColumns(object Id)
                : base()
            {
                this.Id = Id;
            }
        }
    
        class CustomColumnHelper : DataGridBoundColumn, IColumn
        {
            public object Id { get; set; }
    
            public CustomColumnHelper()
                : base()
            {
    
            }
    
            public CustomColumnHelper(object Id)
                : base()
            {
                this.Id = Id;
            }
    
            protected override FrameworkElement GenerateEditingElement(DataGridCell cell, object dataItem)
            {
                return null;
            }
    
            protected override FrameworkElement GenerateElement(DataGridCell cell, object dataItem)
            {
                return null;
            }
    
            protected override object PrepareCellForEdit(FrameworkElement editingElement, RoutedEventArgs editingEventArgs)
            {
                return null;
            }
        }

    Ahora en silverlight cargo y creo columnas y filas de la grilla de la siguiente forma:

            private void UserControl_Loaded(object sender, RoutedEventArgs e)
            {
                CrearGrilla();
            }
    
            internal void CrearGrilla()
            {
                CustomColumnHelper columna = new CustomColumnHelper();
                columna.Id = 0;
                columna.Header = "Fecha";
                columna.Binding = new System.Windows.Data.Binding("Value");
                columna.Width = new DataGridLength(1.0, DataGridLengthUnitType.Star);
                dgrFechasTemporada.Columns.Add(columna);
    
                for (int i = 0; i < 10; i++)
                {
                    CustomColumns columnaHelper = new CustomColumns();
                    columnaHelper.Binding = new System.Windows.Data.Binding("Value");
                    columnaHelper.Id = (i + 1);
                    columnaHelper.Header = i.ToString();
                    columnaHelper.Width = new DataGridLength(1.0, DataGridLengthUnitType.Star);
                    dgrFechasTemporada.Columns.Add(columnaHelper);
                }
    
                AniadirFilas();
            }
    
            internal void AniadirFilas()
            {
                List<List<ElementComposed>> elementsComposed = new List<List<ElementComposed>>();
    
                for (int i = 0; i < 10; i++)
                {
                    List<ElementComposed> elements = new List<ElementComposed>();                
    
                    for (int j = 0; j < dgrFechasTemporada.Columns.Count; j++)
                    {
                        ElementComposed element = new ElementComposed();
                        IColumn column = (IColumn)dgrFechasTemporada.Columns[j];
    
                        if (Convert.ToInt32(column.Id).Equals(0))
                        {   
                            element.Id = column.Id;
                            element.Value = DateTime.Now.AddDays(i).ToLongDateString();                        
                        }
                        else
                        {   
                            element.Id = column.Id;
                            element.Value = ((j % 2) == 0);                        
                        }
    
                        elements.Add(element);
                    }
    
                    elementsComposed.Add(elements);
                }
    
                dgrFechasTemporada.ItemsSource = elementsComposed;
            }
    Pero la grilla no se carga :(, alguna forma de cargar la grilla de otra forma pero desde codigo y sin necesidad de usar clases de la libreria System.Data ??

    martes, 5 de marzo de 2013 17:26