Aplicación de Windows Phone 8 Crear botones de forma dinámica / programática en g grid / Panel

Tengo un problema al crear botones dinámicamente en la aplicación Windows Phone 8.

Puedo crear estos botones en mi archivo Xaml Pero no programáticamente … aquí está la instantánea de ese archivo …

http://www.4shared.com/photo/Hu1FVCdn/wp8.html

Tengo una vista de cuadrícula en el lado izquierdo y botones en ella (1,2,3,4,5). Hice estos botones en el archivo Xaml. No a través del progtwig.

Cuando se hace clic en el botón de Comercio, estos botones deberían mostrar (programáticamente) … Por el Controlador del Botón de Comercio …

Aquí está mi código de Xaml ..

               

Excepto la creación de esta manera … Solo quiero poner un bucle for (archivo C #) en el controlador del botón de comercio, luego este trabajo se realizará mediante progtwigción …

Lo hice pero solo muestra un botón … ¿No todos los botones? Puede b problema de ubicación .. ??

Aquí está mi código xaml.cs

  public main() { InitializeComponent(); } private void Button_Click(object sender, RoutedEventArgs e) { NavigationService.Navigate(new Uri("/MainPage.xaml", UriKind.RelativeOrAbsolute)); } private void Grid_View_Btn_1_Click(object sender, System.Windows.RoutedEventArgs e) { int i; for (i=0;i<5;i++) { Button btn = new Button() { Content = "Button" }; btn.Width=130; btn.Height = 66; grid.Children.Add(btn); } // Grid.SetRow(control, i); // Grid.SetColumn(control, j); // TODO: Add event handler implementation here. } 

cómo mi resultado se vuelve como mi instantánea … pero de forma dinámica / programática. Por favor, guíame para este problema … Gracias de antemano …!

La respuesta de Jahind es una buena solución, pero creo que hay un pequeño error, es necesario agregar el panel a la cuadrícula después del bucle, algo así debería funcionar:

  private void Grid_View_Btn_1_Click(object sender, System.Windows.RoutedEventArgs e) { Dispatcher.BeginInvoke(() => { StackPanel panel = new StackPanel(); panel.Orientation = System.Windows.Controls.Orientation.Vertical; int i; for (i=0;i<5;i++) { Button btn = new Button() { Content = "Button" }; btn.Width=130; btn.Height = 66; // btn.Margin = new Thickness(0,0,0,0)//try this if you use grid //grid.Children.Add(btn); panel.Children.Add(btn); } grid.Children.Add(panel); // Grid.SetRow(control, i); // Grid.SetColumn(control, j); // TODO: Add event handler implementation here. }); } 

Su código parece bien, no hay problema en la creación de botones. su código crea exactamente 5 botones y los agrega a la cuadrícula, pero el único problema es que coloca todos los botones en una ubicación dentro de la cuadrícula. Aquí está la solución 1. Si desea utilizar como contenedor principal, establezca el margen de cada botón. 2. Cree un panel de astackdo con orientación vertical y agregue primero el botón en el panel de astackmiento, luego agregue el panel de astackmiento en la cuadrícula.

 private void Grid_View_Btn_1_Click(object sender, System.Windows.RoutedEventArgs e) { Dispatcher.BeginInvoke(() => { StackPanel panel = new StackPanel(); panel.Orientation = System.Windows.Controls.Orientation.Vertical; int i; for (i=0;i<5;i++) { Button btn = new Button() { Content = "Button" }; btn.Width=130; btn.Height = 66; // btn.Margin = new Thickness(0,0,0,0)//try this if you use grid //grid.Children.Add(btn); panel.Children.Add(btn); } grid.Children.Add(panel); // Grid.SetRow(control, i); // Grid.SetColumn(control, j); // TODO: Add event handler implementation here. }); }