在活动 window 中编辑活动 WPF 控件
Edit active WPF control in an active window
我有一个 WPF window,里面有一个 WindowsFormsHost 对象。理想情况下,我想在 window 处于活动状态时访问 WindowsForm 控件。
我可以为 WindowsFormsHost 控件注册一个我需要的名称或任何类似的名称,然后执行以下操作:
WindowCollection mainWin = System.Windows.Application.Current.Windows;
在这种特殊情况下,我知道我需要的 window 将始终在 mainWin[2] 中,但我不确定如何直接访问 WindowsFormsHost 对象以向其添加 Winform 控件。
伪代码,您将需要一个带有 public 属性 的 MyWindow class,在此 window 中公开名为 MyWindowsFormsHost 的 WindowsFormsHost Controll。
WindowCollection mainWin = System.Windows.Application.Current.Windows;
MyWindow win = (MyWindow)mainWin[2];
win.MyWindowsFormsHost.Child = MyNewControl;
我想这就是你想要实现的目标:
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();
}
我有一个 WPF window,里面有一个 WindowsFormsHost 对象。理想情况下,我想在 window 处于活动状态时访问 WindowsForm 控件。
我可以为 WindowsFormsHost 控件注册一个我需要的名称或任何类似的名称,然后执行以下操作:
WindowCollection mainWin = System.Windows.Application.Current.Windows;
在这种特殊情况下,我知道我需要的 window 将始终在 mainWin[2] 中,但我不确定如何直接访问 WindowsFormsHost 对象以向其添加 Winform 控件。
伪代码,您将需要一个带有 public 属性 的 MyWindow class,在此 window 中公开名为 MyWindowsFormsHost 的 WindowsFormsHost Controll。
WindowCollection mainWin = System.Windows.Application.Current.Windows;
MyWindow win = (MyWindow)mainWin[2];
win.MyWindowsFormsHost.Child = MyNewControl;
我想这就是你想要实现的目标:
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();
}