我已经成功创建了一个示例项目,使用HwndHost来托管Notepad(并非我真正的项目将要嵌入的内容)在C# WPF选项卡控件中。对此,我要感谢那些回答在WPF窗口中托管外部应用程序的人们(顺便说一句,不需要DwayneNeed)。
这个示例工作得很好,直到你点击托管的Notepad实例,然后尝试切换选项卡。如果您没有导航到新页面中的任何内容,则必须先单击当前页面选择器,然后才能接受其他选项卡的单击。如果在其他页面上有内容(任何内容...只是一个按钮),则必须两次单击新选项卡选择器才能使其导航。 我尝试过但没用的事情:
这个示例工作得很好,直到你点击托管的Notepad实例,然后尝试切换选项卡。如果您没有导航到新页面中的任何内容,则必须先单击当前页面选择器,然后才能接受其他选项卡的单击。如果在其他页面上有内容(任何内容...只是一个按钮),则必须两次单击新选项卡选择器才能使其导航。 我尝试过但没用的事情:
- 使用AttachThreadInput()加入两个应用程序窗口的输入线程。
- 在Tab Control鼠标按下事件上调用
this.InvalidateVisual();
。
- 当按下按钮时,以编程方式更改
TabControl.SelectedIndex
值。
p.s. 我对WPF和C#有点陌生。