powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / sender родительский контейнер
3 сообщений из 3, страница 1 из 1
sender родительский контейнер
    #38998598
TD6370
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как обратиться к родительскому контейнеру через дочерний элемент?
У меня есть в панели два списка с одинаковым событием, но с разными именами:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
<StackPanel Orientation="Vertical">
                    <ListBox x:Name="lb1">
                        <ListBox.ContextMenu>
                            <ContextMenu>
                                <MenuItem Header="Вставить" VerticalAlignment= "Stretch" Click="LBmiPaste_Click"></MenuItem>
                            </ContextMenu>
                        </ListBox.ContextMenu>
                    </ListBox>
                    <ListBox x:Name="lb2">
                        <ListBox.ContextMenu>
                            <ContextMenu>
                                <MenuItem Header="Вставить" VerticalAlignment= "Stretch" Click="LBmiPaste_Click"></MenuItem>
                            </ContextMenu>
                        </ListBox.ContextMenu>
                    </ListBox>
</StackPanel>


И есть обрабатываемое событие
Код: sql
1.
2.
3.
4.
private void LBmiPaste_Click(object sender, RoutedEventArgs e)
        {
            MenuItem miV = sender as MenuItem;
        }


Как через miV или другим способом обратиться к нужному контролу - lb1 или lb2 в зависимости от того, какой дочерний элемент уго вызвал? Заранее благодарен.
...
Рейтинг: 0 / 0
sender родительский контейнер
    #38999049
TD6370
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нашел. К контролу ListBox нужно добираться через Parent и PlacementTarget.
...
Рейтинг: 0 / 0
sender родительский контейнер
    #38999152
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TD6370Нашел. К контролу ListBox нужно добираться через Parent и PlacementTarget.

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
        public static T FindVisualParent<T>(DependencyObject element) where T : UIElement
        {
            var parent = element;
            while (parent != null)
            {
                var correctlyTyped = parent as T;
                if (correctlyTyped != null)
                {
                    return correctlyTyped;
                }

                parent = VisualTreeHelper.GetParent(parent) as UIElement;
            }
            return null;
        }



метод находит родителя по типу в визуальном дереве (похоже по работе на:
{RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type T}})
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / sender родительский контейнер
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]