Поиск динамически генерируемых элементов управления Wcf с помощью FindName()

Метод FramworkElement.FindName() для нахождения элемента управления в родительском элементе управления выглядит так, как будто он должен быть прямым...

Но я поднимаю анти, и кажется, что фреймворку не нравится то, что я пытаюсь сделать.

Прежде всего, я понимаю, что есть много разных способов ведения дел, и имейте в виду, что это первая форма, которую я создаю в WPF.

Я загружаю элементы управления в StackPanel в зависимости от количества элементов в коллекции. Этот метод является обязательным, так как коллекция определяется количеством каталогов внутри [URL-адрес, введенный пользователем].

Список строит горизонтальные стековые панели в вертикальную стековую панель, которая помещается в форму во время проектирования.

Таким образом, dirStackPanel находится на форме. Я вставляю controlStackPanel в dirStackPanel n раз и называю каждое идентифицирующим именем: (строка)("controlStackPanel" + n).

Я также заполняю controlStackPanel элементами управления, но это спорный вопрос, учитывая, что я не могу извлечь controlstackPanel из его родителя (dirStackPanel) по имени.

пример:

var getPanel = (StackPanel) this.dirStackPanel.FindName((string)("controlStackPanel" + n))Возвращает Нуль

Таким образом, чтобы быть ясным, каждому элементу управления, который я вставляю в ВРЕМЯ РАБОТЫ, присваивается имя, и его можно легко получить с помощью цикла. Но метод FindName не будет работать с первым дочерним элементом управления родительского элемента "StackPanel". Он продолжает возвращать ноль, а не объект.

Есть идеи?

1 ответ

Если вы создаете элементы управления динамически, вы должны сначала вызвать RegisterName, чтобы иметь возможность их найти.

Например:

dirStackPanel.RegisterName(controlStackPanel.Name, controlStackPanel);
Другие вопросы по тегам