WPF FindName()没找到指定名称的元素
1.FindName()说明,可以用来获取已经注册名称的元素或标签
// // 摘要: // 查找具有提供的标识符名的元素。 // // 参数: // name: // 所请求元素的名称。 // // 返回结果: // 请求的元素。如果未找到匹配的元素,该值将为 null。 public object FindName(string name);
但是后台添加名称注册的方式是使用RegisterName(),而不是直接给Name赋值
// // 摘要: // 提供一个可简化对 System.Windows.NameScope 注册方法访问的访问器。 // // 参数: // name: // 要在指定的名称-对象映射中使用的名称。 // // scopedElement: // 映射的对象。 public void RegisterName(string name, object scopedElement);
举例说明:
1.直接赋值Name,无法通过FindName()查找到
//后台添加name 的元素 Label lbl1 = new Label(); lbl1.Content = "张三丰"; lbl1.Name = "lbl1"; //这样指定的无法通过FindName()查找到 panelOne.Children.Add(lbl1);
//查找后台添加的元素,没有找到 Label lbl1 = this.FindName("lbl1") as Label; if (lbl1 != null) { MessageBox.Show(lbl1.Content.ToString()); }
2.使用RegisterName(),注册可以使用FindName()查找到
TextBlock block = new TextBlock(); block.Text = "海上生明月"; panelOne.RegisterName("block1", block); //将block命名block1名称注册到panelOne上 panelOne.Children.Add(block);
//从当前窗口获取,可以访问到 TextBlock block1 = btn1.FindName("block1") as TextBlock; if (block1 != null) { MessageBox.Show(block1.Text); } //从Panel获取,可以访问到 TextBlock block2 = panelOne.FindName("block1") as TextBlock; if (block2 != null) { MessageBox.Show("panelOne:"+block2.Text); }
分类:
C#-WPF
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人