我需要动态生成尽可能多的标签,并在需要时访问其中的每一个标签。但 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()
从未找到任何内容并且始终为 null !
我该如何解决这个问题?
最佳答案
名称范围可能存在问题,导致“FindName”返回 null。
从父/祖先开始查找特定命名元素的不同方法的解释可以在这篇文章中找到:How can I find WPF controls by name or type?
尝试一下,看看它是否适合您。
关于wpf - 在 WPF 中使用 FindName() 找不到动态生成的控件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13701719/