我有一个网格,我在其中创建并添加了后面代码中的元素。
Dim staffImgLeft As New Controls.Image()
staffImgLeft.Name = "StaffImgLeft"
mainGrid.Children.Add(staffImgLeft)
当我尝试从网格中删除子元素时,它们不会被删除。
mainGrid.Children.Remove(mainGrid.FindName("StaffImgLeft"))
代码运行时没有错误。谁能告诉我为什么我的代码不起作用?
答案 0 :(得分:1)
FindName
返回null,因此不会删除任何内容。
Register名称,而不是将其设置为可查找:
mainGrid.RegisterName("StaffImgLeft",staffImgLeft)
答案 1 :(得分:1)
您应该使用RegisterName
和UnregisterName
,这样您就拥有了一个访问者,可以简化对NameScope注册的访问。
Dim staffImgLeft As New Controls.Image();
staffImgLeft.Name = "StaffImgLeft";
mainGrid.Children.Add(staffImgLeft);
// register name
mainGrid.RegisterName(staffImgLeft.Name, StaffImgLeft);
// then remove
mainGrid.Children.Remove(mainGrid.FindName("StaffImgLeft"));
// un-register if you intend to re-register an element with the same name later.
mainGrid.UnregisterName("StaffImgLeft");
您应该阅读有关WPF XAML Namescopes的内容 http://msdn.microsoft.com/en-us/library/ms746659.aspx