2012-03-05 3 views
0

Как я создать новую кнопку на StackPanel, возможно, в файле классаСоздать новую кнопку со свойствами, используя класс

public static void addbtn() 
    { 
     Page1 p1 = new Page1(); 
     Button btn = new Button(); 
     p1.stackPanel1.Children.Add(btn); 
    } 

Я уверен, что это разве на самом деле правильно, в то же время хау Я даю ему обработчик событий.

Моя цель - создать кнопку в форме1 одним нажатием кнопки из формы2.

Пожалуйста, помогите мне с этим. Спасибо!

+0

В WPF вы редко когда-либо хотите создавать элементы управления в коде, обычно вы будете манипулировать данными и позволять создавать пользовательский интерфейс с помощью [шаблонов данных] (http://msdn.microsoft.com/en-us/library/ms742521 .aspx). –

+0

, вероятно, не следует делать это статическим методом. –

ответ

1

Ваш код должен работать. Вы можете добавить свойства/события кнопки как:

Button btn = new Button(); 
btn.Content = "Press me"; 
btn.Click = (sender, e) => { *your handling code* }; 
+0

Не может быть из-за Page1 p1 = new Page1(); – CodeGuru

1

Вы добавляете свою кнопку к объекту Page1 вы только что создали, который, по-видимому, не является тот, который показывается пользователю.

Если вы находитесь в том же классе, что определяет сам Page1 вы можете просто использовать

this.stackpanel1.children.add(btn) 

Хотя примечание это должно быть методом экземпляра не статический метод, в противном случае он не будет знать, что «это " относится к.

Если это не тот же класс, вам необходимо передать ему ссылку на объект, к которому вы пытаетесь добавить кнопку. Что-то вроде этого:

public static void addbtn(Page1 p1) 
{ 
    Button btn = new Button(); 
    p1.stackPanel1.Children.Add(btn); 
} 

И вы будете проходить в реальном экземпляре Page1 вы хотите добавить кнопку.

+0

Class1.addbtn (??); как добавить из формы2? – CodeGuru

+0

Итак, позвольте мне понять это, вы хотите, чтобы функция в форме2 добавляла кнопку to form1? Это верно? Если да, то form2 потребуется ссылка на form1, и вам нужно будет сделать панель стека, которую вы добавляете к общедоступному свойству form1, или вам нужен метод открытого экземпляра (не статический) в form1, который вы можете вызвать из формы2. –

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