使用 Microsoft.Dwayne 时出错需要解决 WPF 空域问题

Posted

技术标签:

【中文标题】使用 Microsoft.Dwayne 时出错需要解决 WPF 空域问题【英文标题】:Error When using Microsoft.DwayneNeed to solve WPF airspace isssue 【发布时间】:2021-10-08 14:44:14 【问题描述】:

我有一个 wpf 应用程序,它在主窗口上使用了 winform 控件。当然,当显示模态边框时,这个 winform 控件保持在顶部。之后,我发现Microsoft.Dwayne需要解决这个问题的方法。它有效。但是出现了一个新的问题。让我描述一下我的情况:

在主窗口中,我有一个 Grid,它有三列。第一列中的控件是一个普通的 wpf 控件。第二列包含一个 Gridsplitter。第三列是 winform 控件所在的位置。

在我使用 AirspaceDecorator(来自 Microsoft.DwayneNeed)作为 winform 控件的容器之前,除了 winform 控件总是停留在最上面,一切正常,GridSplitter 运行良好。

我使用AirspaceDecorator作为winform控件的容器后,winform控件不再停留在最顶层。很好,正是我想要的。但令人惊讶的是,GridSplitter 不再起作用了: 1.一般来说,我不能拖动 GridSplitter --- 它应该按设计水平拖动。 2.偶尔GridSplitter会被拖到窗口的左边缘或右边缘,此时winform控件占据整个窗口,或者为零。

我尝试了一些方法,例如AirspaceFixer,使用WinformHost托管对话边框等。但是这些方法都不起作用。

谢谢!

【问题讨论】:

【参考方案1】:

经过一些测试,我解决了这个问题。答案是正确使用AirspaceFixer。

在调用由 AirspaceFixer 包裹的 winform 控件上的 show 之前,应将 FixAirspace 设置为 true,在隐藏上 wpf 控件后,应将 FixAreaSpace 属性设置为 false。就像它的演示一样。

【讨论】:

以上是关于使用 Microsoft.Dwayne 时出错需要解决 WPF 空域问题的主要内容,如果未能解决你的问题,请参考以下文章

使用 JPA 进行 Spring 启动 - 创建名为“entityManagerFactory”的 bean 时出错 - driverClassName 需要 jdbcUrl

Maven 组装 WAR 时出错:使用纯基于 Java 的配置构建 SpringMVC 项目且没有 xml 时需要 webxml 属性

Terraform GCP - 等待设置使用导出存储桶时出错。:“gcp-bucket”需要“读取”权限

使用条件将数据插入配置单元时出错

Google Calendar API 出错 - 添加日历事件时需要 401 登录

解析服务器全文搜索 - 生成响应时出错。错误:需要搜索字词