我在WPF弹出窗口中托管windowsforms控件。以下问题:
我甚至尝试过弹出窗口的IsMouseCaptureWithin属性,发现它不适用于winforms(我猜它是框架中的一个bug)。
另一个问题,我试图关闭弹出窗口,当根主要窗体(这是窗口窗体)被取消激活(按下Alt + Tab),但是这个事件(停用)即使我进入其中一个弹出窗口中的控件在windowshostControl中。
所需行为:
感谢任何输入。
感谢。
答案 0 :(得分:2)
我在WPF中的defacto标准弹出窗口遇到了很多问题,因为它们实际上是一个带有自己句柄的新窗口。这意味着如果您在屏幕上拖动应用程序,弹出窗口将保持不变(它不随窗口移动)。这也意味着您的弹出窗口有一些奇怪的行为,并且不会以其他控件通常的方式与您的应用程序交互。
我已经创建了2个装饰器类来解决这个问题:
PopupDecorator.cs和 TimeoutPopupDecorator.cs
使用非常简单:
为新的弹出类添加名称空间声明。即。
的xmlns:dday_wpf = “CLR-名称空间:DDay.WPF”
围绕您希望弹出窗口能够与装饰器一起显示的区域。即。
< dday_wpf:PopupDecorator x:Name =“popup”> < dday_wpf:PopupDecorator.Popup> ... popup的内容在这里... < / dday_wpf:PopupDecorator.Popup> ...小组的内容到这里... < / dday_wpf:PopupDecorator>
从那一刻起,它与普通Popup
几乎完全相同。
这可能无法解决您的所有问题,但希望它有所帮助。
答案 1 :(得分:0)
这听起来有点像我从WPF表单启动无模式winform控件的问题。
查看我的问题Why is my WPF textbox "kinda" readonly?。
根据道格所说的关于弹出窗口是一个有自己手柄的窗口,正确的存在使这适用。