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

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

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

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

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

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

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

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

пример:

var getPanel = (StackPanel) this.dirStackPanel.FindName((string)("controlStackPanel" + n))Возвращает значение NULL

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

Любые идеи?


person Brett Spencer    schedule 10.03.2011    source источник


Ответы (1)


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

Например:

dirStackPanel.RegisterName(controlStackPanel.Name, controlStackPanel);
person Gimno    schedule 10.03.2011