我在usercontrol中有以下代码。
<Grid>
<Popup x:Name="MyPopup" IsOpen="true" AllowsTransparency="True" HorizontalOffset="0" VerticalOffset="500">
<Border VerticalAlignment="Top" Height="500" Width="440">
<Keyboard:Keyboard x:Name="Keyboard"/>
</Border>
</Popup>
</Grid>
Popup上的自定义键盘在WPF应用程序中正常工作。
但是当使用 ElementHost 在 winforms 中托管相同的usercontrol并在此上下文中打开 SaveFileDialog 时, Popup不会#39; t得到关注。
现在我在Popup上有一个键盘,在这种情况下它有点过时了。
任何关于Popup的建议/想法/黑客攻击? 或者是否有可能在Winforms中实现这一目标?
答案 0 :(得分:1)
我认为它没有得到关注,因为ShowDialog
正在阻止,因此在显示对话框时,您的窗口无法接收任何事件。
可能的解决方法是从另一个STA线程显示对话框。
var dialog = new SaveFileDialog();
var thread = new Thread(() => dialog.ShowDialog());
thread.SetApartmentState(ApartmentState.STA);
thread.Start();