Скрыть динамически созданные дочерние элементы сетки - PullRequest
0 голосов
/ 30 августа 2011

У меня есть сетка, в которой я создал и добавил элементы из кода.

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

Когда я пытаюсь удалить дочерние элементы из сетки, они не удаляются.

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

Нет ошибок при запуске кода. Кто-нибудь может посоветовать, почему мой код не работает?

Ответы [ 2 ]

1 голос
/ 30 августа 2011

Вы должны использовать 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

1 голос
/ 30 августа 2011

FindName возвращает ноль, следовательно, ничего не удаляется.

Зарегистрируйте имя вместо того, чтобы установить его для поиска:

mainGrid.RegisterName("StaffImgLeft",staffImgLeft)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...