我在WPF 4.0中有一个UserControl,其中包含按钮、标签、文本框等控件......
我想循环遍历这些控件,当我找到一个按钮时,我想获取它的名称并将其保存到我的列表中。基本上,我想做的就是创建一个Names_list,其中包含用户控件中所有按钮的名称。
我有一个方法可以迭代所有控件,如果找到一个按钮,就会保存它的名称 -
public void EnumVisual(Visual myVisual)
{
for (int i = 0; i < VisualTreeHelper.GetChildrenCount(myVisual); i++)
{
// Retrieve child visual at specified index value.
Visual childVisual = (Visual)VisualTreeHelper.GetChild(myVisual, i);
Button _button = childVisual as Button;
if (_button != null)
{
Class_Button _newButtonClass = new Class_Button();
if (_button.Name != null)
{
_newButtonClass.ButtonName = _button.Name;
}
ButtonsList.Add(_newButtonClass);
}
// Enumerate children of the child visual object.
EnumVisual(childVisual);
}
}
我总是得到一个空列表。 当我通过调试进入代码并查看我的UserControl的VisualTree时,我可以看到所有的面板、GroupBoxes和网格,但我看不到按钮、标签和文本框,尽管每个控件都有一个x:Name,每个控件都是x:FieldModifier="public"。这非常奇怪...我也无法理解原因以及如何解决这个问题... 有人能告诉我我做错了什么吗? 谢谢