Wpf 通过FindName()查找动态生成的Wcf控件

Wpf 通过FindName()查找动态生成的Wcf控件,wpf,dynamic-controls,findname,Wpf,Dynamic Controls,Findname,在父控件中查找控件的FramworkElement.FindName()方法似乎应该直接 但我对此感到非常不安,似乎框架不喜欢我正在尝试做的事情 首先,我意识到有很多不同的做事方式,请记住这是我在WPF中创建的第一个表单 我正在根据集合中的项目数将控件加载到StackPanel中。此方法是必须的,因为集合由[用户输入的Url]中的目录数决定 该列表将水平stackpanel构建为垂直stackpanel,该stackpanel在设计期间放置在表单上 所以面板在表格上。 我将controlStac

在父控件中查找控件的FramworkElement.FindName()方法似乎应该直接

但我对此感到非常不安,似乎框架不喜欢我正在尝试做的事情

首先,我意识到有很多不同的做事方式,请记住这是我在WPF中创建的第一个表单

我正在根据集合中的项目数将控件加载到StackPanel中。此方法是必须的,因为集合由[用户输入的Url]中的目录数决定

该列表将水平stackpanel构建为垂直stackpanel,该stackpanel在设计期间放置在表单上

所以面板在表格上。 我将controlStackPanel插入dirStackPanel n次,并使用标识名:(string)(“controlStackPanel”+n)命名每个控件

我还在用控件填充controlStackPanel,但考虑到我无法按名称从其父级(dirStackPanel)检索controlStackPanel,这是一个没有实际意义的问题

例如:

var getPanel=(StackPanel)this.dirStackPanel.FindName((字符串)(“controlStackPanel”+n))
返回Null

所以要清楚,我在运行时插入的每个控件都被分配了一个名称,并且可以使用循环轻松地检索。但是FindName方法在父“StackPanel”的第一个子控件上不起作用。它不断返回null,而不是对象


有什么想法吗?

如果要动态创建控件,必须先调用才能找到它们

例如:

dirStackPanel.RegisterName(controlStackPanel.Name, controlStackPanel);