我是C ++开发人员,最近转向C#。我正在开发一个WPF应用程序,我需要动态生成4个单选按钮。我试图做很多RnD,但看起来这种情况很少见。
XAML:
<RadioButton Content="Base 0x" Height="16" Name="radioButton1" Width="80" />
现在的情况是:我应该使用不同的Content
生成此单选按钮4次,如下所示:
<RadioButton Content = Base 0x0 />
<RadioButton Content = Base 0x40 />
<RadioButton Content = Base 0x80 />
<RadioButton Content = Base 0xc0 />
我在C ++应用程序中完成了以下操作:
#define MAX_FPGA_REGISTERS 0x40;
for(i = 0; i < 4; i++)
{
m_registerBase[i] = new ToggleButton(String(T("Base 0x")) + String::toHexString(i * MAX_FPGA_REGISTERS));
addAndMakeVisible(m_registerBase[i]);
m_registerBase[i]->addButtonListener(this);
}
m_registerBase[0]->setToggleState(true);
如果您在上面注意到,则每次循环播放内容名称变为Base 0x0
,Base 0x40
,base 0x80
和base 0xc0
,并将第一个radiobutton的切换状态设置为true 。因此,如果您注意到所有这4个按钮都有单按钮单击方法,并且基于索引,每个按钮都将执行操作。
如何在我的WPF应用中实现这一目标? :)
答案 0 :(得分:6)
我打算为你写一套代码,但意识到你的问题可能已在这里得到解答: WPF/C# - example for programmatically create & use Radio Buttons
这可能是最干净的方式,具体取决于您的要求。如果你想要最简单的情况,那就是:
的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">
<Grid >
<StackPanel x:Name="MyStackPanel" />
</Grid>
</Window>
C#:
public MainWindow()
{
InitializeComponent();
for (int i = 0; i < 4; i++)
{
RadioButton rb = new RadioButton() { Content = "Radio button " + i, IsChecked = i == 0 };
rb.Checked += (sender, args) =>
{
Console.WriteLine("Pressed " + ( sender as RadioButton ).Tag );
};
rb.Unchecked += (sender, args) => { /* Do stuff */ };
rb.Tag = i;
MyStackPanel.Children.Add( rb );
}
}
只需添加内容,标签等所需的逻辑。