隐藏动态创建的网格子元素

时间:2011-08-30 01:34:51

标签: wpf vb.net grid

我有一个网格,我在其中创建并添加了后面代码中的元素。

Dim staffImgLeft As New Controls.Image()
staffImgLeft.Name = "StaffImgLeft"
mainGrid.Children.Add(staffImgLeft)

当我尝试从网格中删除子元素时,它们不会被删除。

mainGrid.Children.Remove(mainGrid.FindName("StaffImgLeft"))

代码运行时没有错误。谁能告诉我为什么我的代码不起作用?

2 个答案:

答案 0 :(得分:1)

FindName返回null,因此不会删除任何内容。

Register名称,而不是将其设置为可查找:

mainGrid.RegisterName("StaffImgLeft",staffImgLeft)

答案 1 :(得分:1)

您应该使用RegisterNameUnregisterName,这样您就拥有了一个访问者,可以简化对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