miércoles, 25 de noviembre de 2009

Enlazar un Listbox en una Columna del Datagrid - Silverlight 3

El requerimiento era crear un datagrid personalizado en Silverlight 3 para representar una tabla de datos donde, por cada registro de una fila, existian N registros en una de sus columnas. Asumi que en Silverlight deberia ser sencillo gracias al poder de XAML y no estaba equivocado, despues de algunos minutos en google logre dar con la solucion por sladapter en http://forums.silverlight.net/forums/p/121753/274396.aspx.

Anexo mi implementacion y el preview de lo logrado, ademas estrenando hoy el Syntax Highlighter 2.1 (Lo cual me extraño de sobremanera... Como Blogger no tiene hasta la fecha una funcionalidad propia para insertar codigo? mmm... mala tuya google...)

Lista dentro de una columna en un Datagrid - Silverlight 3

Preview:





XAML:


        
         
          
     
      
       
        
        
       
      
     
    
          
     
      
       
        
         
          
           
          
         
        
       
      
     
    
         
        
    




Code-Behind:

using System;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Ink;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using System.Collections.Generic;
using System.Collections;
using System.Windows.Data;

namespace SilverlightApplication1
{
 public partial class MainPage : UserControl
 {
  public MainPage()
  {
   // Required to initialize variables
   InitializeComponent();
   Loaded +=new System.Windows.RoutedEventHandler(MainPage_Loaded);
  }

  private void MainPage_Loaded(object sender, System.Windows.RoutedEventArgs e)
  {
   DataLayer bd = new DataLayer(); 
   dgRegistros.ItemsSource = bd.ObtenerSubCarpetas();
  }
 }
 
 public class DataLayer
 {
  public List ObtenerSubCarpetas()
  {
   List subcarpetas = new List();
   
   Carpeta c1 = new Carpeta("Carpeta 1");
   SubCarpeta s1 = new SubCarpeta("Subcarpeta 1");
   Registro r1 = new Registro();
   r1.NombreRegistro = "Registro 1";
   Registro r2 = new Registro();
   r2.NombreRegistro = "Registro 2";
   s1.Registros.Add(r1);
   s1.Registros.Add(r2);
            s1.TipoCarpeta = c1;
   
   SubCarpeta s2 = new SubCarpeta("Subcarpeta 2");
   Registro r3 = new Registro();
   r3.NombreRegistro = "Registro 3";
   Registro r4 = new Registro();
   r4.NombreRegistro = "Registro 4";
            Registro r5 = new Registro();
            r5.NombreRegistro = "Registro 5";

   s2.Registros.Add(r3);
   s2.Registros.Add(r4);
            s2.Registros.Add(r5);
            s2.TipoCarpeta = c1;
            

            subcarpetas.Add(s1);
            subcarpetas.Add(s2);


   return subcarpetas;   
  }
 }
 
 public class Carpeta
 {
        string _nombreCarpeta;

        public string NombreCarpeta
        {
            get { return _nombreCarpeta; }
            set { _nombreCarpeta = value; }
        }

        public Carpeta(string NombreCarpeta)
        {
            _nombreCarpeta = NombreCarpeta;
        }
 }
 
 public class SubCarpeta
 {
  List _registros;
        string _nombreSubCarpeta;
        Carpeta _tipoCarpeta;

        public Carpeta TipoCarpeta
        {
            get { return _tipoCarpeta; }
            set { _tipoCarpeta = value; }
        }
  
        public string NombreSubCarpeta
        {
            get { return _nombreSubCarpeta; }
            set { _nombreSubCarpeta = value; }
        }

        public SubCarpeta(string NombreSubCarpeta)
        {
            _nombreSubCarpeta = NombreSubCarpeta;
            _registros = new List();
        }

  public List Registros
  {
   get{return _registros;}
   set{_registros=value;}
  }
 }
 
 public class Registro
 {
        string _nombreRegistro;

        public string NombreRegistro
        {
            get { return _nombreRegistro; }
            set { _nombreRegistro = value; }
        }
 }
}

No hay comentarios:

Publicar un comentario