将控件数组等同于现有控件

时间:2012-03-17 16:27:45

标签: c# wpf arrays

我尝试过类似的事情:

RadioButton[] diff = new RadioButton[10];

for (int i = 0; i < 10; ++i)
{
    diff[i] = (RadioButton)Control("rad_D" + i.ToString());
}

显然不起作用。但是正确的方法是什么?

2 个答案:

答案 0 :(得分:0)

编辑:好的,所以你正在寻找已经存在的RadioButtons,在这种情况下,使用FindName。像这样:

RadioButton[] diff = new RadioButton[10];

for (int i = 0; i < 10; ++i)
{
    diff[i] = someparentControl.FindName("rad_D" + i.ToString()) as RadioButton;
}

您需要一个父控件,它可以只是窗口本身,因为它会递归搜索匹配的名称。

答案 1 :(得分:0)

试试这个,如果单选按钮是 Panel 的直接子项,例如Grid,StackPanel等,那么你可以这样做:

var buttons = grid.Children.OfType<RadioButton>().
    Where(rb => rb.Name.StartsWith("rad_D").ToList();

获取List,或者如果你真的想要一个数组

var buttons = grid.Children.OfType<RadioButton>().
    Where(rb => rb.Name.StartsWith("rad_D").ToArray();

你可以使用这篇文章Find all controls in WPF Window by type,它有几种方法可以找到特定类型的所有控件。