Como utilizar LINQ para levantar un handler para varios controles.

Cuantas veces no hemos escrito “n” líneas de código solo  para dar a distintos controles una tarea en específico sin saber que tal vez se pueda hacer en una. Bueno… no prometo nada pero aquí propongo un ejemplo de como podríamos solucionar (o mejor dicho, eficientizar este proceso) este problema. Supongamos que tenemos 3 botones en nuestro LayoutRoot en nuestro control de inicio, algo así: <Grid x:Name="LayoutRoot" Background="White">         <Grid.ColumnDefinitions>             <ColumnDefinition/>             <ColumnDefinition/>         </Grid.ColumnDefinitions>         <Grid.RowDefinitions>             <RowDefinition/>             <RowDefinition/>         </Grid.RowDefinitions>         <Button x:Name="btn1" Width="100" Height="25" Content="Botón 1"                VerticalAlignment="Center" HorizontalAlignment="Center"/>         <Button x:Name="btn2" Width="100" Height="25" Content="Botón 2" Grid.Column="1"                VerticalAlignment="Center" HorizontalAlignment="Center"/>         <Button x:Name="btn3" Width="100" Height="25" Content="Botón 3" Grid.Row="1"                VerticalAlignment="Center" HorizontalAlignment="Center"/>     </Grid>   Normalmente le asociaríamos los eventos de la siguiente forma: public MainPage()         {             InitializeComponent();                 btn1.Click += new RoutedEventHandler(btn1_Click);             btn2.Click += new RoutedEventHandler(btn2_Click);             btn3.Click += new RoutedEventHandler(btn3_Click);         }           void btn1_Click(object sender, RoutedEventArgs e)         {             throw new NotImplementedException();         }           void btn2_Click(object sender, RoutedEventArgs e)         {             throw new NotImplementedException();         }           void btn3_Click(object sender, RoutedEventArgs e)         {             throw new NotImplementedException();         }   O así:             btn1.Click += (a, b) => { /*Código a implementar*/ };             btn2.Click += (a, b) => { /*Código a implementar*/ };             btn3.Click += (a, b) => { /*Código a implementar*/ };   bueno, el propósito de este post es proponer algo de la siguiente forma: public MainPage() {     InitializeComponent();       //De esta forma se levantan los handlers para todos lo botones     LayoutRoot.Children.ToList().ForEach(btn => ((Button)btn).Click += new RoutedEventHandler(btn_Click)); }   void btn_Click(object sender, RoutedEventArgs e) {     //Identificamos quien lo manda a llamar     switch (((Button)sender).Name)     {         case "btn1":             //Código para botón 1             break;         case "btn2":             //Código para botón 2             break;         case "btn3":             //Código para botón 3             break;     } }   Y ya para terminar, como no todo es perfecto en esta vida puede ser que no solo tengamos botones en nuestro LayoutRoot, si no todo tipo de controles que al hacerle el parse a Button nos marcará...

Read More

Dream Systems SL

Dream Systems SL

Dream Systems S.A. de C.V., empresa 100 % Mexicana fundada en 2009, se presenta a usted para ofrecer servicios de Alta Tecnología garantizando la seguridad e integridad de la información.Deseamos ponernos a su entera disposición y ser una alternativa de solución a los requerimientos de su empresa encargándonos de sus necesidades en forma integral y eficaz.Mediante el desarrollo y diseño en acorde a los objetivos y valores, diseñamos una estrategia global consistente para el cliente para consolidarle en una ejecución creativa y eficiente permitiendo mejorar el funcionamiento, la relación con sus clientes y aumentar ventas, junto con una significativa reducción de costos.Para el desarrollo de nuestra labor contamos con las herramientas más nuevas del ramo y principalmente con personal altamente calificado lo que garantiza la efectividad, rapidez, calidad, seguridad en información, atención personalizada y un precio adecuado en cada uno de nuestros servicios. Dream Systems S.A. de...

Read More

Demo HTML5

Demo HTML5

Demo HTML5

Read More

Pablo Aragón

Pablo Aragón

Desde hace mas de 7 años empecé a dedicarme al desarrollo de sistemas con ASP.Net, JavaScript, Transact SQL, Ajax, LINQ, Silverlight, WPF, WCF, jQuery, Objective C, CUTE C++, WP 7 a 7.5, entre otras. Pablo Fernando Aragón Gámez

Read More

Aragón MX

Aragón MX

Básicamente éste equipo es conformado por dos personas, un par de hermanos originarios de México que buscan innovar procesos diarios a través de los sistemas de información y utilizamos la internet para expresar, informar y transmitir todo aquello que se les permita compartir. Aragón...

Read More