How to get a list of controls in a groupbox in WPF

ε祈祈猫儿з 提交于 2019-12-05 08:14:02

问题


In standard WinForms development I would do the following:

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

How does a guy do this in WPF? I have a Grid inside the GroupBox and a number of controls in the grid (buttons etc.) but can't seem to figure out how to get each control.


回答1:


As MSDN advises, you will need to iterate the controls as children of the GroupBox. Also, note that you usually need to add a Grid into your GroupBox to be able to add new controls into that GroupBox. So you will need to get the children of the Grid in that GroupBox and iterate through them, something like this:

//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
               {

               }
            }

You might find this useful: http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/93ebca8f-2977-4c36-b437-9c82a22266f6




回答2:


Simpler code would be something like

foreach (Control control in Grid.Children)
 {
  //Code here for what you want to do.
 }



回答3:


Instead of .Controls, you'll be looking for the .Children property.

Additionally, that will only return first order children. You'll want to recursively find all children of all controls if you truly want all descendants of the GroupBox.



来源:https://stackoverflow.com/questions/1505400/how-to-get-a-list-of-controls-in-a-groupbox-in-wpf

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!