在活动窗口中编辑活动WPF控件

时间:2015-04-21 14:07:31

标签: c# wpf winforms winforms-interop

我有一个WPF窗口,里面有一个WindowsFormsHost对象。理想情况下,我想在窗口处于活动状态时访问WindowsForm控件。

我可以注册一个名称或类似于WindowsFormsHost控件所需的名称,然后执行以下操作:

            WindowCollection mainWin = System.Windows.Application.Current.Windows;

在这种特殊情况下,我知道我需要的窗口将始终位于mainWin [2]中,但我不确定如何直接访问WindowsFormsHost对象以向其添加Winform控件。

2 个答案:

答案 0 :(得分:0)

伪代码,您将需要一个带有公共属性的MyWindow类,在此窗口中公开名称为MyWindowsFormsHost的WindowsFormsHost控件。

WindowCollection mainWin = System.Windows.Application.Current.Windows;
MyWindow win = (MyWindow)mainWin[2];
win.MyWindowsFormsHost.Child = MyNewControl;

答案 1 :(得分:0)

我想这就是你想要实现的目标:

XAML

    <WindowsFormsHost Name="host"></WindowsFormsHost>

代码

private void MainWindow_OnLoaded(object sender, RoutedEventArgs e)
        {
            var txb = new System.Windows.Forms.TextBox();
            host.Child = txb ;
            host.Child = new System.Windows.Forms.DataGrid();
        }