En el post pasado coloqué el procedimiento para generar controles en tiempo de ejecución a través de XAML, bueno eso estuvo bien, pero ¿ahora de que me sirve tener un botón creado dinámicamente si no le puedo asociar un evento? lo más sencillo sería en este caso asociar el evento directamente en el XAML del botón de la siguiente manera
<Button Name="Test" Click="Test_Click" ></Button>
Sin embargo al ejecutar este código en adición al anterior post referente a la creación de controles de manera dinámica lo único que obtendremos es un error en tiempo de ejecución que indica que se debe compilar previamente el XAML, lo cual bueno, nos da otra tarea que no queremos hacer.
Problema:
¿Cómo asociar un evento a un botón que fué creado en runtime?
Solución.
Del post anterior hacemos los siguientes cambios:
StringReader reader = new StringReader(xaml);
XmlReader xml = XmlReader.Create(reader);
Grid rootElement = (Grid)XamlReader.Load(xml);
Button cmd = (Button)rootElement.FindName("bnNextWindow");
//Si el botón existe agregamos el evento
if (cmd != null)
cmd.Click += new RoutedEventHandler(bnNextWindow_Click);
rootElement.Children.Add(rootElement);
Obviamente debemos generar el método que se suscribirá al evento:
void bnNextWindow_Click(object sender, RoutedEventArgs e)
{
throw new NotImplementedException();
}
Y listo!
Hola juan necesito algo y he buscado por todos lados es que yo creo 5 botones en runtime y 5 stackpanel en ru time y que al apretar el boto1 se ponga el stackpanel1 y ek boton2 con el stackpanel 2 y asi todos y no logro encontrar una respuesta ayudame porfavor
ResponderEliminar