2013-12-17 3 views
0

У меня проблема в моем C# файле. Я должен создать 6 кнопок программно в определенном месте. но мой цикл петли не работает.Создайте кучу кнопок программно в C# Win Phone 8 app

только одна кнопка показывает, а не все кнопки.

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Net; 
using System.Windows; 
using System.Windows.Controls; 
using System.Windows.Navigation; 
using Microsoft.Phone.Controls; 
using Microsoft.Phone.Shell; 
//using System.Array; 

namespace AimPass 
{ 
    public partial class main : PhoneApplicationPage 
    { 
    public main() 
    { 
     InitializeComponent(); 

    } 

private void newbutton(object sender, RoutedEventArgs e) 
    { 
// How many buttons do you want ? 
     int NumOfButtons = 6; 
     // X Location of each created button in the panel 
     int loc = 20; 
     for (int i = 1; i <= NumOfButtons; i++) 
     { 
      Button btn = new Button(); 
      { 
       btn.Name = "Btn-" + i.ToString(); 
       btn.Size= new Size(50, 20); 
       btn.Tag = i; 
       btn.Content = "Browse-" + i.ToString(); 
       btn.location = new Point(5, loc); 
      } 
      //Add Click event Handler for each created button 
      btn.Click += Buttons_Click; 
      loc += 20; 
      // Add the created btn to grid 
      grid.Children.Add(btn); 
     } 
} 

} 

}

есть 2,3 ошибки приходит .. использованием System.Windows.Controls.Buttons не содержит определения местоположения и размера ... ???

btn.Click += Buttons_Click; does not exist in current context.. 

И петля не working..Just одна кнопки приходит за исключением 6 кнопок ..

Я хочу добавить кнопку на конкретный location..So эти ошибки приходит к моему требованию .. Thanx заранее для решения этого .. :)

ответ

0

Некоторое время до того, как я прав, это .. так что посмотрите, что получите то, что вы прочитали. немного длинный, но я думаю, что это поможет вам понять, что вы ищете. Вы можете добавить строку и добавить кнопку к нему в цикле одновременно, но немного больше всегда хорошо ..

это ваш solution..for ваш case..but я думаю, что вы собираетесь на неправильный путь ..

private void newbutton() 
    { 
     // How many buttons do you want ? 
     int NumOfButtons = 6; 
     // X Location of each created button in the panel 
     StackPanel stkpanel = new StackPanel(); 
     stkpanel.Orientation = Orientation.Horizontal; 
     int loc = 20; 
     for (int i = 1; i <= NumOfButtons; i++) 
     { 
      Button btn = new Button(); 
      { 
       btn.Name = "Btn-" + i.ToString(); 
       btn.Height = 20; 
       btn.Width = 50; 
       btn.Foreground = new SolidColorBrush(Colors.White); 
       btn.Content = "btnnum" + i.ToString(); 
       btn.Tag = i; 
       btn.Content = "Browse-" + i.ToString(); 
       btn.Margin = new Thickness(5 + loc, 5, 5, 5); 
       btn.VerticalAlignment = Windows.UI.Xaml.VerticalAlignment.Top; 
      } 
      //Add Click event Handler for each created button 
      btn.Click += btn_Click; 
      loc += 20; 
      // Add the created btn to grid 
      stkpanel.Children.Add(btn); 
     } 
     grid.Children.Add(stkpanel); 
    } 

    void btn_Click(object sender, RoutedEventArgs e) 
    { 
     // throw new NotImplementedException(); 
    } 

так что..это лучше вы что-то пробовали в некоторых образцовых проектах..что я хочу опробовать вас .. И как в предыдущем ответе говорится, что кнопка не содержит таких свойств, как loc и т. д., которые вы хотите установить ... для этого поля есть .. и для размера и ширины размера ... и важная вещь ... прежде всего, вы пишете Xaml для чего хотите для достижения и попытаться установить свойство, которые вы установили в XAML во время во время выполнения в новом project..it определенно сказать вам, как это работает ..

Grid grdbooltype = new Grid(); 
      grdbooltype.Name = "Grid_" + keybooltype; 
      grdbooltype.Margin = new Thickness(0, 20, 20, 0); 
      grdbooltype.RowDefinitions.Add(new RowDefinition() { Height = GridLength.Auto }); 
      grdbooltype.RowDefinitions.Add(new RowDefinition()); 

      TextBlock objtextblock = new TextBlock(); 
      objtextblock.Text = "Select Image"; 
      objtextblock.FontSize = 15; 
      grdbooltype.Children.Add(objtextblock); 
      Grid.SetRow(objtextblock, 0); 


      Grid grdtoggleswitch = new Grid(); 
      grdtoggleswitch.Name = headername; 
      grdtoggleswitch.ColumnDefinitions.Add(new ColumnDefinition() { Width = GridLength.Auto }); 
      grdtoggleswitch.ColumnDefinitions.Add(new ColumnDefinition()); 

      TextBlock txtblktoggleswitchleft = new TextBlock(); 
      txtblktoggleswitchleft.FontSize = 15; 
      txtblktoggleswitchleft.VerticalAlignment = VerticalAlignment.Center; 
      txtblktoggleswitchleft.Text = headername; 
      Grid.SetColumn(txtblktoggleswitchleft, 0); 

      ToggleSwitch toggleswitch = new ToggleSwitch(); 
      toggleswitch.Name = key; 
      toggleswitch.HorizontalAlignment = HorizontalAlignment.Right; 
      toggleswitch.Padding = new Thickness(0); 
      toggleswitch.IsOn = defaultvalue; 
      toggleswitch.Margin = new Thickness(0, 0, 0, 0); 
      toggleswitch.OnContent = "On"; 
      toggleswitch.OffContent = "Off"; 
      Grid.SetColumn(toggleswitch, 1); 

      grdtoggleswitch.Children.Add(txtblktoggleswitchleft); 
      grdtoggleswitch.Children.Add(toggleswitch); 

      Grid.SetRow(grdtoggleswitch, 1); 

      grdbooltype.Children.Add(grdtoggleswitch); 
+0

Krybooltype n other much также не содержится в текущем контексте .. ?? Какое возможное решение для такого типа ошибок. – Arsal

+0

Вы пропустили первую строку, я думаю. Здесь определен «Grdbooltype». – C4u

0

Ну, во-первых, кнопки в Windows Phone не имеют размера и местоположения. Почему вы думаете, что они делают? Вместо Size, у вас есть два свойства: Width и Height.

Что касается местоположения, XAML не работает таким образом. Сетка - это особый вид управления, который создает макет, и вы определяете, сколько столбцов и строк вы хотите в своей сетке. Затем вы устанавливаете элементы управления внутри отдельных ячеек или вы можете создавать ячейки управления.

Возможно, вам стоит немного узнать о XAML, вот хорошая отправная точка: Layout for Windows Phone.

- EDIT: Добавление образца кода для размещения кнопки в первой строке и первом столбце. Обратите внимание, что вы должны определить определение сетки и столбцов либо в XAML, либо в коде.

grid.Children.Add(btn); 
Grid.SetRow(btn, 0); 

Grid.SetColumn (btn, 0);

+0

вы знаете синтаксис размещения моего управления в сетке строке или столбец .. ?? – Arsal

Смежные вопросы