2013-11-23 30 views
1

我正在向列表中的每個項目的堆棧面板添加一個單選按鈕,而且這種情況沒有問題。 (它增加了4或6個單選按鈕,因爲這些將是我列表中的項目數)。在堆棧面板中動態添加控件的WPF火災事件

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