Как я могу получить имя списка, в котором находится панель стека? - PullRequest
0 голосов
/ 19 декабря 2011

Событие dragOver стековой панели дает мне доступ к стековой панели в качестве отправителя, но как я могу получить имя списка, в котором находится стековая панель (панель стека определена в таблице данных). Причина этого заключается в том, чтобы в конечном итоге получить доступ ко всем остальным стековым панелям в списке, сгенерированном табличкой данных, поэтому, если я здесь лаю не на том дереве, я ценю альтернативный способ доступа к другим стековым панелям. Спасибо,

Dan.

Ответы [ 4 ]

2 голосов
/ 19 декабря 2011

Обновленный (рабочий) ответ

Вам нужно пройти вверх по визуальному дереву с VisualTreeHelper.GetParent на StackPanel,и при необходимости возвращайтесь к другим родителям, пока не найдете ListBox (используйте оператор as или is, чтобы обнаружить, что вы его нашли).

Для дополнительного удобства или если вам нужноОбходя дерево в других направлениях (что немного сложнее), вы можете использовать оболочку, которая отображает обход в формате LINQy, например этот .

Все это говорит, что выВозможно, вы захотите взглянуть на Как найти элементы управления WPF по имени или типу? .

1 голос
/ 19 декабря 2011

В соответствии с этим StackPanel не достигнет корня логического дерева с помощью свойства Parent, так как оно находится внутри шаблона, поэтому используйте свойство TemplatedParent. В нем вы, вероятно, получите ListBoxItem, в котором родитель будет иметь listbox.

1 голос
/ 19 декабря 2011
var listboxName = (stackpanel.Parent as ListBox).Name;
1 голос
/ 19 декабря 2011

Используйте свойство .Parent, чтобы получить объект, в котором находится текущий объект.

...