Después de ver un resumen de la teoría del patrón en el anterior post, vamos a comenzar a programar, para ello, lo más conveniente es preparar el modelo. El objetivo de este tutorial, es mostrar el patrón MVVM a través de una aplicación WPF que consuma unos datos de un servicio web. En definitiva una aplicación que muestre el tiempo de una ciudad.
Empezamos creando un nuevo proyecto de WPF, y a la solución le agregamos un nuevo proyecto de librería dinámica, en la cual vamos a trabajar el modelo.
Creación del modelo
Una vez agregado el proyecto, introducimos cinco clases: Location y Coordinates, y DataBlock, DataPoint y Weather.
Coordinates.cs
namespace WeatherApp.Model { public class Coordinates { public double Latitude { get; set; } public double Longitude { get; set; } } }
Location.cs
using System; namespace WeatherApp.Model { public class Location { public String Name { get; set; } public String Country { get; set; } public Coordinates Coordinates { get; set; } } }
DataPoint.cs
using System; namespace WeatherApp.Model { public class DataPoint { public int time { get; set; } public String summary { get; set; } public String icon { get; set; } public int? sunriseTime { get; set; } public int? punsetTime { get; set; } public double precipIntensity { get; set; } public double? precipProbability { get; set; } public String precipType { get; set; } public String precipAccumulation { get; set; } public double? temperature { get; set; } public double? temperatureMin { get; set; } public int? temperatureMinTime { get; set; } public double? temperatureMax { get; set; } public int? temperatureMaxTime { get; set; } public double windSpeed { get; set; } public int windBearing { get; set; } public double cloudCover { get; set; } public double humidity { get; set; } public double pressure { get; set; } public double visibility { get; set; } } }
DataBlock.cs
using System; namespace WeatherApp.Model { public class DataBlock { public String summary { get; set; } public String icon { get; set; } public DataPoint[] data { get; set; } } }
Weather.cs
using System; namespace WeatherApp.Model { public class Weather { public double latitude { get; set; } public double longitude { get; set; } public String timeZone { get; set; } public int offset { get; set; } public DataPoint currently { get; set; } public DataBlock minutely { get; set; } public DataBlock hourly { get; set; } public DataBlock dayly { get; set; } public object[] alerts { get; set; } public object flags { get; set; } } }
En el siguiente post continuaremos con el modelo también, generando más lógica de negocio para obtener los datos.