首页 > 代码库 > WPF FindName()没找到指定名称的元素
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);}
WPF FindName()没找到指定名称的元素
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。