lunes, 26 de noviembre de 2012

Como rellenar un GridView en WPF siguiendo MVVM

Estoy aprendiendo WPF siguiendo el libro de Introducción a programación en Windows 8 y Windows Phone 8 de Josué Yeray, Rafael Serna  e Ibón Landa.

Así, cuando me he enfrentado con representar una lista de datos en pantalla, he encontrado rápidamente la utilidad de la Vista GridView de las List View.

Así, tengo una entidad de Cliente, que entre otros campos tiene un IdCliente, un Nombre y un Apellidos.

    public partial class Cliente
  
{
      
public int IdCliente {get;set; }
      
public string Nombre {get;set; }
      
public string Apellidos {get;set; }
    }

En la capa de Datos he creado una capa que realiza la recuperación de la colección de clientes que está persistida en la base de datos, a través del EF.

 public class ClientesDAL
   
{

       
/// <summary>
        ///
Devuelve el listado total de clientes
       
/// </summary>
        /// <returns></returns>
       
public List<Cliente> GetClientesList()
        {
           
KMSPanelModelContainer contexto = new KMSPanelModelContainer();
           
return (from Cliente cliente in contexto.Clientes
                   
select cliente).ToList();
        }

       
public Cliente GetClienteById(Cliente pCliente)
        {
           
KMSPanelModelContainer contexto = new KMSPanelModelContainer();
           
return (from Cliente cliente in contexto.Clientes
                  
where cliente.IdCliente == pCliente.IdCliente
                  
select cliente).FirstOrDefault();
        }
    }

En el ViewModel, tengo mi clase que va a ser el DataContext y en donde cargo un listado de clientes en la propiedad pública.

    public class PantallaClientes : VMBase
   
{
       
private List<Cliente> listadoClientes;
       
public List<Cliente> ListadoClientes
        {
           
get { return GetClientesList(); }
           
set { listadoClientes = value; }
        }

       
public PantallaClientes()
        {
            listadoClientes = GetClientesList();
        }

       
/// <summary>
        ///
Devuelve el listado de clientes
       
/// </summary>
        /// <returns></returns>
       
private List<Cliente> GetClientesList()
        {
           
ClientesDAL clientesDAL = new ClientesDAL();
           
return clientesDAL.GetClientesList();
        }
    }

Ahora (perdonarme el código en el codebehind, pero aún no lo he terminado del todo) enlazo el DataContext de la Vista (View).

    public partial class MainWindow : Window
   
{
       
public MainWindow()
        {
            InitializeComponent();
           
this.DataContext = new TSA_KMSPanel.ViewModel.PantallaClientes();
        }
    }

Y ahora llegamos al binding en el XAML, pero el cual lo voy a poner en el siguiente post.

No hay comentarios: