Как получить список элементов управления в групповом окне в WPF - PullRequest
2 голосов
/ 01 октября 2009

В стандартной разработке WinForms я бы сделал следующее:

foreach (Control in groupBox1.Controls)
{
     MessageBox.Show(c.Name);
}

Как парень делает это в WPF? У меня есть Grid внутри GroupBox и несколько элементов управления в сетке (кнопки и т. Д.), Но я не могу понять, как получить каждый элемент управления.

Ответы [ 3 ]

6 голосов
/ 01 октября 2009

Как советует MSDN, вам нужно будет перебрать элементы управления как дочерние элементы GroupBox. Также обратите внимание, что вам обычно нужно добавить Grid в GroupBox, чтобы иметь возможность добавлять новые элементы управления в GroupBox. Таким образом, вам нужно собрать детей из Grid в этом GroupBox и перебрать их, что-то вроде этого:

//iterate through the child controls of "grid"
int count = VisualTreeHelper.GetChildrenCount(grid);
            for (int i = 0; i < count; i++)
            {
              Visual childVisual = (Visual)VisualTreeHelper.GetChild(grid, i);
                if (childVisual is TextBox)
                {
                    //write some logic code
                }
               else
               {

               }
            }

Вы можете найти это полезным: http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/93ebca8f-2977-4c36-b437-9c82a22266f6

1 голос
/ 30 января 2015

Более простой код будет что-то вроде

foreach (Control control in Grid.Children)
 {
  //Code here for what you want to do.
 }
0 голосов
/ 01 октября 2009

Вместо .Controls вы будете искать свойство .Children.

Кроме того, возвращаются только дети первого порядка. Вы захотите рекурсивно найти всех потомков всех элементов управления, если вы действительно хотите, чтобы все потомки GroupBox.

...