jueves, 11 de octubre de 2012

PRIMER APLICACIÓN WPF


PF

Para empezar un nuevo proyecto en WPF en Visual C# deben de elegir WPF Application. Este proyecto les va crear App.xaml que es la Application que inicializa mi aplicación y nos crea un MainWindow.xaml que es la ventana que se lanza en primera instancia. Es muy importante recordar que en WPF ya no existen los FORMS entonces ahora les llamaremos Window o Page depende que este usando.



XAML 

Si no vamos al archivo MainWindow y lo vemos en vista diseño, Visual Studio nos divide la pantalla a la mitad tenemos una vista previa de nuestro diseño y del otro nuestro código XAML. Por ejemplo el mío

        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="Ejmeplo" Height="350" Width="525"
        WindowStartupLocation="CenterScreen" WindowState="Normal" ShowInTaskbar="True" ResizeMode="CanResize">
   
 
   



x:Class="Ejemplo.MainWindow". Le indica a XAML donde se encuentra nuestro code Behind.
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation". Hace referencia a todos los controles que podemos usar con XAML.
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" . Hace referencia a las reglas de XAML, para validar nuestro documento.

Un Window ó Page solo puede un elemento por esa razón es que siempre vamos a ver un Grid en su interior. El Grid puede contener uno o más elementos anidados.

Para empezar vamos a meter un DataGrid que ocupe el ancho y alto de mi ventana y dos botones para agregar y eliminar que siempre van a estar arriba a la derecha. A dentro de mi grid:



       
       


Para los que ya hayan trabajado con ASP.NET ya se habran dado cuenta que es casí el mismo concepto.

CODE BEHIND C#

Ahora en nuestro Code Behind de C# tenemos una lista de contactos y dos métodos, uno para agregar un contacto y otro para eliminar el contacto seleccionado. Por el momento el DataGrid se encarga de autogenerar las columnas.

namespace EjemploJesus
{
    ///
    /// Interaction logic for MainWindow.xaml
    ///

    public partial class MainWindow : Window
    {
        List iContactos;
        public MainWindow()
        {
            InitializeComponent();
            iContactos=new List();
            dgDatos.ItemsSource = iContactos;
        }

        private void btnAgregar_Click(object sender, RoutedEventArgs e)
        {
            iContactos.Add(new Contacto("ISRAEL", "ROMERO PONCE", "27272XXXXX"));
            dgDatos.Items.Refresh();
        }

        private void btnEliminar_Click(object sender, RoutedEventArgs e)
        {
            iContactos.Remove((Contacto)dgDatos.SelectedItem);
            dgDatos.Items.Refresh();
        }
    }

    class Contacto
    {
        string nombre;

        public string Nombre
        {
            get { return nombre; }
            set { nombre = value; }
        }
        string apellidos;

        public string Apellidos
        {
            get { return apellidos; }
            set { apellidos = value; }
        }
        string telefono;

        public string Telefono
        {
            get { return telefono; }
            set { telefono = value; }
        }

        public Contacto(string nombre, string apellidos, string telefono)
        {
            this.nombre = nombre;
            this.apellidos = apellidos;
            this.telefono = telefono;
        }
    }
}

Y listo ya tienen un pequeña aplicación que Agrega, elimina y aparte edita dentro del DataGrid. La lista de Contactos esta sincronizada con el datagrid. Fácil y sencillo para el siguiente ejemplo lo haremos con base de datos y LINQ, que casi el mismo concepto.