在父控件中查找控件的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而不是对象。
任何想法?
答案 0 :(得分:8)
如果要动态创建控件,则必须先调用RegisterName才能找到它们。
例如:
dirStackPanel.RegisterName(controlStackPanel.Name, controlStackPanel);