2012-05-04 3 views
0

У меня возник вопрос о доступе к элементам внутри другого элемента.Получить элемент внутри элемента (родитель/ребенок) WPF

Ситуация

<grid name=container> 
    <grid name=menu > 
     inside here is the menu 
    </grid 
<button /> 
<grid> 

Если кнопка нажата второй сетки (с меню) необходимо скрыть. Как получить доступ к элементу сетки при нажатии кнопки. Это должно быть без использования фактического имени сетки, поскольку оно находится в шаблоне данных, а несколько объектов используют тот же самый шаблон, но только фактическое активное нужно скрыть.

+0

Первых положил полный код. то есть с DataTemplate –

ответ

1

Класс RoutedEventArgs имеет свойства Source, OriginalSource, которые могут использоваться для определения требуемой информации. Кроме того, аргумент отправителя также доступен в обработчике событий.

Следующая ссылка объясняет разницу (а также отвечает на вопрос) в Source, OriginalSource и Sender. RoutedEventArgs.Source vs Sender

RoutedEventArgs.OriginalSource - оригинальный объект, который первым вызвал событие

RoutedEventArgs.Source - объект, который поднял событие. Это, как правило, такие же, как OriginalSource, но при работе с композитным управлением может быть родителем, который содержит объект OriginalSource *

Sender -. Текущий элемент, который обрабатывает событие

+0

Я на самом деле не понимаю. Прямо сейчас я использую этот код 'Button button = (Button) e.Source как Button; ScatterViewItem item = (ScatterViewItem) ScatterView.ContainerFromElement (кнопка); 'Параметр Item предоставляет мне ScatterViewItem, где кнопка является частью. Но мне не нужен элемент ScatterView, но сетка называется «Menu» внутри этого элемента ScatterView. – user1371933

+0

заглядывая в исходный код, вы не требуете родителя, но родного брата. Для этого вам нужно получить родителя, тогда вам нужно найти дочерний объект, на который вы смотрите. что-то похожее на item.FindName ("menu"). http://msdn.microsoft.com/en-us/library/system.windows.frameworkelement.findname.aspx Пожалуйста, поставьте полный исходный код в случае, указанном выше, не решит вас. – Tilak

Смежные вопросы