3

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

但是我正在提高anty,似乎框架不喜欢我正在尝试做的事情。

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

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

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

所以 dirStackPanel 在表单上。我将 controlStackPanel 插入 dirStackPanel n 次,并用识别名称命名每个:(字符串)(“controlStackPanel”+ n)。

我也在用控件填充 controlStackPanel,但考虑到我无法按名称从其父级 (dirStackPanel) 检索 controlstackPanel,这是一个有争议的问题。

例子:

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

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

有任何想法吗?

4

1 回答 1

8

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

例如:

dirStackPanel.RegisterName(controlStackPanel.Name, controlStackPanel);
于 2011-03-10T22:19:13.947 回答