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

3

FramworkElement.FindName() 方法用于在父控件内查找控件,看起来很简单...

但是我想升级它,似乎框架不喜欢我正在尝试的事情。

首先,我确实意识到有很多不同的方法可以做到这一点,并且请记住,这是我在WPF中创建的第一个表单。

我根据集合中的项目数量将控件加载到 StackPanel 中。由于该集合取决于[user entered Url]中的目录数量,因此必须使用此方法。

该列表构建了水平堆栈面板,这些面板被放置在设计期间放置在垂直堆栈面板中。

因此,dirStackPanel 在表单上。 我将 controlStackPanel 插入 dirStackPanel 中 n 次,并使用标识名称命名每个控件:(string)("controlStackPanel" + n)。

我还填充了 controlStackPanel 中的控件,但是考虑到我无法通过名称从其父项(dirStackPanel)检索 controlStackPanel,这是一个无意义的点。

例如:

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

因此,每个我在运行时插入的控件都被分配了一个名称,并且可以使用循环轻松检索。但是,FindName 方法无法在父 "StackPanel" 的第一个子控件上工作。它一直返回 null 而不是对象。

有什么想法吗?

1个回答

8
如果您正在动态创建控件,您需要先调用RegisterName才能找到它们。
例如:
dirStackPanel.RegisterName(controlStackPanel.Name, controlStackPanel);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接