Entradas

Mostrando las entradas etiquetadas como WPF

Clase BaseViewModel

Para implementar el patron MVVM, debemos hacer que nuestras clases ( del ViewModel ) implementen de la la interface INotifyPropertyChanged , que sirve para notiticar a los clientes (bindings) que el valor de la propiedad ha cambiado, por lo cual para cada ViewModel que hagamos debemos cumplir la firma de la interface lo cual se vuelve una tarea repetitiva y para tal efecto lo mas conveniente es crear una clase base abstracta que realize la implementacion de la interface y de la cual nosotros heredemos cada vez que se desee crear un ViewModel. La clase es como sigue: using System; using System.ComponentModel; using System.Linq.Expressions; using System.Diagnostics; using System.Reflection; namespace RegistryViewer { public abstract class BaseViewModel : INotifyPropertyChanged { public event PropertyChangedEventHandler PropertyChanged; public virtual void NotifyPropertyChanged( string propertyName ) { if ( this.P...

Modern UI Style para WPF

Imagen
Desde que salió Windows Phone 7 con Metro Style  Modern UI y posteriormente Windows 8, se empezó a vislumbrar el estándar de interfaces de usuarios que iban a ser la norma. Con rasgos minimalistas, es un lenguaje de diseño basado en tipografía, que prioriza una navegación a través del texto. Metro esta basado en el “Estilo Tipográfico Internacional” o “Estilo Suizo” que posee las siguientes características (Wikipedia): “Las características del estilo son el de la unidad en el diseño lograda a través de la asimetría en la composición, el uso de una malla tipográfica y una cuadrícula totalmente matemática. El estilo es asociado también a una preferencia por la fotografía en lugar de ilustraciones o dibujos. Se presentaba la información basándose en la claridad, la legibilidad y la objetividad, usando tipografías sin serif como la Akzidenz Grotesk. Este uso de la tipografía reflejaba el espíritu progresista de la época. Algunos de los primeros diseñadores del Estilo Tipográfico I...

Buscar Software Instalado a través del Registro de Windows

Imagen
Algunas veces es necesario saber que software esta instalado o ha sido instalado en una maquina, por ejemplo al momento de realizar una auditoria informática. Por lo cual tener una pequeña herramienta que nos facilite el trabajo de recolección y organizado de los datos seria bastante útil. Entonces solo queda ponerse manos a la obra, para lo cual primero vamos a crear una aplicación WPF en Visual Studio y luego vamos a agregar la clase DelegateCommand y otra clase llamada ViewModel. Nuestro siguiente paso será crea una función que se ocupe de buscar las llaves en el registro que contengan información de los productos que se encuentra en "SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\XXX\Products\" donde XXX varia de maquina en maquina, por lo cual nuestra función se ocupara de entregarnos la llaves bien formadas: public void LoadRegistryEntries() { RegistryKey rk = Registry.LocalMachine.OpenSubKey( @"SOFTWARE\Microsof...

Dialogo Modal en MVVM

Imagen
Los Diálogos Modales están entre los elementos más complejos de usar en el patrón MVVM principalmente por la necesidad de separación de ocupaciones que se debe de cumplir. Ciertamente se puede manejar de una manera fácil el manejo de los Diálogos Modales desde la vista y en el caso que deseemos hacer la llamada desde el ViewModel, podemos usar eventos, pero ciertamente no es lo recomendable. Para solucionar el problema se tiene las siguientes opciones: -           Usar el patrón Mediador -           Implementar el dialogo como un servicio En el presente post voy a usar la segunda opción pero omitiendo más que todo el uso del Inversor de Control, ciertamente no es una solución al 100% completa por que se genera tiene un ratio mayor de acoplabilidad, pero hay que tomar en cuenta que en la mayoría de los proyectos no es primordial tal característica y la inversión de tiempo requerida (más q...

El Patrón Model - View - ViewModel ( MVVM )

Imagen
El patron Model - View - ViewModel fue concebido por John Gossman allá por el año 2005 en un post de su blob titulado "Introduction to Model/View/ViewModel pattern for building WPF apps"( http://blogs.msdn.com/b/johngossman/archive/2005/10/08/478683.aspx ), siendo este una adaptación del patrón Presentation Model ( http://martinfowler.com/eaaDev/PresentationModel.html ) propuesto por Martin Fowlers para tecnologías .NET como XAML(como se conoce ahora al conjunto de herramientas para desarrollar en Windows 8), WPF y Silverlight. Este patrón junto a otros mas conocidos como MVC o MVP tiene por objetivo simplificar las tareas de desarrollo y mantenimiento del software escrito con estos a través de la división de ocupaciones, por lo cual alguien que ya haya trabajado previamente con alguno de los patrones previamente mencionados, le parecerá bastante familiar MVVM. Model El modelo, dentro de MVVM es el encargado de representar el modelo del negocio, proveyendo de esta ma...

Enviar Parámetros Personalizados a un Evento

En algún momento vamos a necesitar enviar parámetros a un evento, presupongamos que tenemos el siguiente escenario, tenemos una vista en WPF (XAML, con Code – Behind) y tenemos una clase llamada Persona. Supongamos que cuando sucede un evento determinado, como por ejemplo el cambio de alguna de sus propiedades, debe de avisarle a la vista que despliegue un MessageBox en pantalla con un mensaje. Para poder conseguir esto haremos lo siguiente; crearemos una nueva clase llamada "EventArgsWithMessage” que heredara de EventArgs: public class EventArgsWithMessage : EventArgs { public string Message{ get ; set ;} public EventArgsWithMessage( string _message) { this .Message=_message; } } El siguiente paso sera crear un “EventHandler” en nuestra clase Persona, de la siguiente manera: public event EventHandler ShowErrorMessage; Como siguiente paso dentro de la misma clase usaremos el siguiente código para realizar la ll...

Conectarse a un Web Service en PHP con WPF

Imagen
Este caso de estudio, que vamos a ver a lo largo de esta entrada, nos minimiza costos, al menos en la parte de que nuestros servidores pueden estar sobre plataforma Linux, inclusive si vamos a crear una aplicación open source podemos usar hosting gratuitos que existen en grandes cantidades. Además hay que tomar en cuenta el hecho de que no existen muchos hosting de Bases de Datos (por no decir ninguno) que permitan conexiones remotas, lo cual se nos presenta como un problema un poco difícil de salvar, a menos claro de que usemos Web Services. Crear el Web Service en PHP Para crear un Web service en PHP deberemos de usar la librería de clases NuSOAP, que la podemos descargarla de aquí . NuSoap es un conjunto de clases escritas en PHP, que facilitan la creación y el consumo de Web Services SOAP,   esta librería se caracteriza por si sencillez al momento de implementarla, lo cual genera menos tiempo de Desarrollo para nuestros proyectos. Para nuestra aplic...