用于在堆栈面板中动态添加控件的WPF Fire事件

时间:2013-11-23 19:54:27

标签: c# wpf

我正在为List中的每个项目添加一个单选按钮添加一个单选按钮,这种情况没有问题。 (它会添加4或6个单选按钮,因为这些按钮会列在我的列表中。)

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

现在我想要做的是在运行时选择这些动态创建的单选按钮。 我想开一个活动。 所以我在想的是我必须将一个处理程序附加到单选按钮上。我尝试了一些方法,但不能这样做。我在网格中有另一个单选按钮,它也不属于这个组。请建议这样做的理想方式。

1 个答案:

答案 0 :(得分: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";