2013-11-23 3 views
1

Я добавляю добавление переключателя для панели стека для каждого элемента в списке, и это происходит без проблем. (он добавляет 4 или 6 переключателей, так как это будет количество элементов в моем списке).Событие WPF Fire для динамически добавленного управления в панели стека

foreach (var nearestgage in nearestgages) 
{ 
    StackPanel.Children.Add(new RadioButton { Content = nearestgage.GageSize.ToString(), Margin = new Thickness(1, 1, 1, 1) });       
} 

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

ответ

3

Вот небольшой пример, добавляющий событие к переключателю при его создании.

XAML:

<Window x:Class="WpfApplication1.MainWindow" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     Title="MainWindow" Height="350" Width="525" 
     Loaded="Window_Loaded"> 
    <StackPanel Name="StackPanel"> 

    </StackPanel> 
</Window> 

C#

public partial class MainWindow : Window 
{ 
    public MainWindow() 
    { 
     InitializeComponent(); 
    } 

    private void Window_Loaded(object sender, RoutedEventArgs e) 
    { 
     for (int i = 1; i <= 10; i++) 
     { 
      RadioButton rb = new RadioButton(); 
      rb.Content = "Item " + i.ToString(); 
      rb.Click += rb_Click; 
      StackPanel.Children.Add(rb); 
     } 
    } 

    void rb_Click(object sender, RoutedEventArgs e) 
    { 
     MessageBox.Show((sender as RadioButton).Content.ToString()); 
    } 
} 

Чтобы справиться с сохранением радио кнопки действия отделиться, установите имя группы:

rb.GroupName = "Dynamic"; 
+0

идеальный. Благодаря! – simba

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