【问题标题】:Can't find dynamically generated control, using FindName() in WPF在 WPF 中使用 FindName() 找不到动态生成的控件
【发布时间】:2012-11-22 00:12:55
【问题描述】:

我需要动态生成尽可能多的标签,并在需要时访问其中的每一个。但是 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 ! 我该如何解决这个问题?

【问题讨论】:

    标签: wpf label dynamically-generated findname


    【解决方案1】:

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

    从父/祖先开始查找特定命名元素的不同方法的说明可以在此帖子中找到:How can I find WPF controls by name or type?

    试试看它是否适合你。

    【讨论】:

    • 太棒了!当您尝试的第一件事起作用时总是好的:)
    • 是的,这非常鼓舞人心 :) 再次感谢 chamila_c ;)
    猜你喜欢
    • 2023-03-29
    • 2015-12-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-15
    • 1970-01-01
    相关资源
    最近更新 更多