Приравнять массив элементов управления к существующему элементу управления. - PullRequest
0 голосов
/ 17 марта 2012

Я пробовал что-то вроде:

RadioButton[] diff = new RadioButton[10];

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

Понятно не работает. Но каков был правильный путь?

Ответы [ 2 ]

0 голосов
/ 17 марта 2012

Попробуйте, если переключатели являются прямыми дочерними элементами Панели , такой как Grid, StackPanel и т. Д., То вы можете сделать это:

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

для получения списка илиесли вам действительно нужен массив

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

И вы можете использовать эту статью Найти все элементы управления в окне WPF по типу , в котором есть несколько методов для нахождения всех элементов управления определенного типа.

0 голосов
/ 17 марта 2012

Редактировать: Хорошо, значит, вы ищете уже существующие RadioButtons, в этом случае используйте FindName.Примерно так:

RadioButton[] diff = new RadioButton[10];

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

Вам нужен родительский элемент управления, который может быть просто окном, поскольку он будет рекурсивно искать подходящее имя.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...