使用WPF中的FindName()找不到动态生成的控件

时间:2012-12-04 11:19:29

标签: wpf label dynamically-generated findname

我需要根据需要动态生成尽可能多的标签,并在需要时访问每一个标签。但是FindName()还没有工作......

以下是我所做的一个简单示例

我有一个自定义编写的类,继承自Label类,名为myLabel。 我在我的WPF项目上放了一个按钮。通过单击它,将动态创建myLabel类的实例并将其添加到网格(myGrid),如下所示:

myLabel LBL = new myLabel();
LBL.Height = 30;
LBL.Name = "MyLabel1";
LBL.Content = "I am a label.";
myGrid.Children.Add(LBL);

还有另一个名为“更改颜色”的按钮,它应该找到以前创建的标签并更改它的前景色。这是该按钮的点击事件中的代码:

Label Thelabel = (Label)myGrid.FindName("MyLabel1");
Thelabel.Foreground = Brushes.Azure;

问题是FindName()永远找不到任何东西,并且总是为空! 我该如何解决这个问题?

1 个答案:

答案 0 :(得分:2)

名称范围可能存在导致“FindName”返回null的问题。

可以在这篇文章中找到从父母/祖先开始寻找特定命名元素的不同方法的解释:How can I find WPF controls by name or type?

尝试一下,看看它是否适合你。