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

Bre*_*cer 3 wpf dynamic-controls findname

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

但我正在加强anty,似乎框架不喜欢我想做的事情.

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

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

该列表将水平堆栈面板构建为垂直堆栈面板,该面板在设计期间放置在表单上.

所以dirStackPanel就在表格上.我将controlStackPanel插入dirStackPanel n次,并用识别名称命名每个:(string)("controlStackPanel"+ n).

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

例:

var getPanel = (StackPanel) this.dirStackPanel.FindName((string)("controlStackPanel" + n))返回Null

所以要清楚的是,我在AT RUN TIME插入的每个控件都被分配了一个名称,并且可以使用循环轻松检索.但FindName方法不适用于父"StackPanel"的第一个子控件.它不断返回null而不是对象.

有任何想法吗?

Gim*_*mno 8

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

例如:

dirStackPanel.RegisterName(controlStackPanel.Name, controlStackPanel);
Run Code Online (Sandbox Code Playgroud)