как ссылаться на родительскую форму из элемента управления WPF - PullRequest
7 голосов
/ 20 декабря 2010

Я использую elementhost для размещения пользовательского элемента управления WPF в форме Windows.Я хочу знать, как ссылаться на родительскую форму в элементе управления WPF.

Ответы [ 3 ]

16 голосов
/ 20 декабря 2010

Вот способ сделать это из WPF UserControl, в котором есть кнопка:

    private void button1_Click(object sender, RoutedEventArgs e)
    {
        var source = (HwndSource)PresentationSource.FromDependencyObject(button1);
        var host = (Forms.Integration.ElementHost)Forms.Control.FromChildHandle(source.Handle);
        var form = (Forms.Form)host.TopLevelControl;
        // Show form title
        MessageBox.Show(form.Text);
    }

(в этом коде Forms - псевдоним для System.Windows.Forms)

3 голосов
/ 20 декабря 2010

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

Колин Э.

2 голосов
/ 20 декабря 2010

Я предлагаю вам

  • выставить событие из WPF child control,
  • зарегистрироваться на это событие от родителя при его создании,
  • вызывать это событие всякий раз, когдаесли вы хотите получить данные от дочернего элемента управления,
  • заставляет родительский элемент управления возвращать данные, устанавливая значения в настраиваемом EventArgs объекте.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...