Cuando he tenido la oportunidad de hablar con estudiantes suelo decirles que no solo de int, string y double vive el hombre, en esta entrada pienso escribir acerca de un tipo especial de variables que se llaman enumeradores.
Este tipo de valor tiene una gran característica, son valores constantes que pueden ser adoptados en ocasiones sucesivas y que se establecen al declararse.
Pero si eres como yo y en la parte práctica lo asimilas mejor, pues vamos a esa parte, en este caso los implementaré dentro de una aplicación Silverlight, pero son aplicables a cualquier tipo de plataforma en la que te quieras mover (WPF, Windows Phone 7, Windows Forms, etc.).
En esta aplicación además de los controles creados al momento de crear la solución, crea un control de usuario únicamente, inserta el siguiente código XAML en ese control de usuario (recuerda modificar el parámetro “x:Class” para que encaje bien con tu solución).
<UserControl xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" x:Class="Enumeradores.ControlPersonalizado" Width="250" Height="250"> <Border x:Name="contPrincipal" BorderBrush="White" BorderThickness="1" Margin="5" Background="#FF323232"/> </UserControl> |
Ahora bien, en su code behind, es en donde comenzarás a trabajar con los enumeradores, antes del método constructor, crea la variable que mencioné, de la siguiente forma.
public enum Colores { Rojo, Verde, Azul, Blanco, Negro } |
Y después, crea una variable de tipo Colores (el título de tu enumerador) y su propiedad, para dejarla de la siguiente forma.
private Colores tipo; public Colores Tipo { get { return tipo; } set { tipo = value; switch (tipo) { case Colores.Azul: contPrincipal.Background = new SolidColorBrush(Colors.Blue); break; case Colores.Rojo: contPrincipal.Background = new SolidColorBrush(Colors.Red); break; case Colores.Verde: contPrincipal.Background = new SolidColorBrush(Colors.Green); break; case Colores.Blanco: contPrincipal.Background = new SolidColorBrush(Colors.White); break; case Colores.Negro: contPrincipal.Background = new SolidColorBrush(Colors.Black); break; } } } |
Ya que tienes tu control personalizado, brinca a tu MainPage y mándalo llamar, para que después coloques cinco botones dejando tu contenedor principal de la siguiente forma.
<Grid x:Name="LayoutRoot" Background="White"> <local:ControlPersonalizado x:Name="controlPrueba" Margin="0,0,0,230" HorizontalAlignment="Left" d:LayoutOverrides="Width"/> <Button x:Name="btnRojo" Content="Rojo" Height="36" Margin="254,8,285,0" VerticalAlignment="Top" Click="boton_Click"/> <Button x:Name="btnAzul" Content="Azul" Height="36" Margin="254,48,285,0" VerticalAlignment="Top" Click="boton_Click"/> <Button x:Name="btnVerde" Content="Verde" Height="36" Margin="254,88,285,0" VerticalAlignment="Top" Click="boton_Click"/> <Button x:Name="btnBlanco" Content="Blanco" Height="36" Margin="254,128,285,0" VerticalAlignment="Top" Click="boton_Click"/> <Button x:Name="btnNegro" Content="Negro" Height="36" Margin="254,168,285,0" VerticalAlignment="Top" Click="boton_Click"/> </Grid> |
Ya solo para finalizar, viene mi parte favorita, utilizar el enumerador y propiedad de mi control para dejarlo de la siguiente forma en el evento “Click” del botón.
Como puedes ver, es muy sencillo de implementar, y lo mejor del caso es que podrás deducir que es así como se implementan muchas de las herramientas que utilizas frecuentemente.
Así que aprovecha esta gran ventaja para ahorrar unas buenas líneas.