【问题标题】:Using Mahapps.Metro Flyouts in Elementhost在 Elementhost 中使用 Mahapps.Metro Flyouts
【发布时间】:2018-03-01 11:54:59
【问题描述】:

我正在编写一个 SolidWorks 插件,我只能在 Winforms Elementhost 中托管 WPF。现在我想使用来自 Mahapps.Metro 的 Flyout,它取决于托管在 MetroWindow 中。有什么方法可以从 WPF 用户控件中使用 Flyout?我正在使用 .NET 4.6.2、Mahapps.Metro 1.6 和 SolidWorks 2018。

【问题讨论】:

  • 实际上UserControl 绝对可以单独托管Flyout。真正的问题是Flyout 内部带有箭头标志的漂亮圆形按钮并不能很好地延续到ElementHost:你得到的只是一个里面有一些垃圾的方形按钮。但除此之外,它在打开和关闭Flyout 时工作正常。
  • 根据link,弹出窗口取决于托管在 Metrowindow 中?
  • 也许他们从 2014 年开始“修复”它?试一试...Here's what i got。请注意丑陋、混乱的按钮。但它似乎在功能上是可操作的,至少包含一个简单的TextBlock

标签: wpf mahapps.metro solidworks elementhost


【解决方案1】:

看起来我找到的信息 herehere 已过时。我刚刚安装了 NuGet 包 Mahapps.Metro 和 Mahapps.Metro.Iconpacks,一切都按预期工作。

如果有人也尝试在 SolidWorks 插件中执行此操作,请确保手动加载新版本的 System.Windows.Interactivity,因为 Solid 正在从应用程序基础目录加载旧版本,这与 Mahapps 不兼容.地铁!

【讨论】:

    【解决方案2】:

    在使用 Solidworks 的 .NET 插件时要非常小心。如果您的应用程序使用某些第三方 UI 库,则需要将这些引用的程序集复制到宿主应用程序 (sldworks.exe) 目录。出于某种原因,域应用程序是托管 exe 而不是 dll 的应用程序。 CLR 将在 sldworks.exe 的目录中查找引用,但找不到,应用程序会抛出一些令人讨厌的异常,这将使您的 SOLIDWORKS 崩溃。

    【讨论】:

    • 当你使用像 Costura.Fody 这样的 IL weaver 时,你不需要复制 dll 文件
    • @ksdmg 伊尔织布工是做什么的?
    • IL weaver 嵌入了所有将 CopyLocal 设置为 true 的引用库。您可以在 costura GitHub 页面上找到所有相关信息!
    • 那将是一个救生员。我会试试看。
    猜你喜欢
    • 1970-01-01
    • 2010-11-24
    • 1970-01-01
    • 2022-10-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多