Pau*_*son 2 wpf mvvm revit-api
我想重写我的 Revit 插件之一,以便它通过 MVVM 使用 WPF,因为与 Windows 窗体相比,我更喜欢 WPF 的外观和功能。
我已将 Jeremy Tammik 的 Revit 模板向导用于基于表单的加载项,但添加 WPF 用户控件似乎不起作用(无法找到 xaml 资源的运行时错误)。
我在示例中找到了一个 WPF MVVM revit add(AddMaterials,这里是 github 链接,它将从 Excel 电子表格添加材料),但它不符合我期望在顶层看到的内容。
第三个问题很容易解决,只需将 WPF 应用程序项目中的窗口复制到类库项目中即可。但我不太明白如果不遵循模板中的 app.cs 代码,类库将如何在 Revit 中实例化。还有其他人以这种方式创建加载项吗?如果是的话,您能让我了解任何有帮助的技巧或讨论吗?有人为 Visual Studio 创建了 WPF Revit 插件模板吗?
当我添加 WPF 窗口并尝试实例化它时,出现错误,指出找不到 xaml 资源(System.IO.IOException:无法找到资源“xxxx.xaml”)。我尝试根据谷歌搜索此错误时找到的建议来修复此问题,但无济于事。我认为它来自于基于表单的项目,并且我可能必须从一个没有表单内容的新项目开始。
我现在已经验证,您确实可以从 Revit AddIn Wizard 开始并使用 WPF 。。。我从头开始,复制到另一个项目中创建的窗口中并让它运行(在添加各种引用、命名空间等之后)。所以我的问题似乎只是与原始项目有关,它已经添加了一堆表单内容。
小智 5
是的,我正在使用 WPF 创建 Revit 插件。效果很好。您可以从 SDK 示例轻松创建自己的 WPF 模板:
我不太熟悉 AddMaterials 项目,但为了澄清您的要点。
Revit 插件 - 这不是文件名 (app.cs),而是它们必须扩展IExternalApplication或IExternalCommand. 如果您要创建 xaml 界面(而不仅仅是从功能区按钮运行命令),您将使用“IExternalApplication”作为入口点。在示例中查找类似的内容:
public class ThisApplication : IExternalApplication ...
Run Code Online (Sandbox Code Playgroud)我没有使用顶级 app.xaml,而是使用 Revit 应用程序调用的 page.xaml 页面。就我而言,这些是页面而不是 Windows,它们扩展了 IDockablePaneProvider 类。这些必须在应用程序中注册,然后可以显示、隐藏您的窗格等。我想这对于 Windows 来说会更简单,但我自己还没有这样做过。对于可停靠窗格,您的 xaml.cs 应该以如下形式开始:
public partial class MainPage : Page, Autodesk.Revit.UI.IDockablePaneProvider ...
Run Code Online (Sandbox Code Playgroud)是的,该项目是一个类库,因为它是类的集合,至少其中一个扩展IExternalApplication或IExternalCommand. 请记住,您不是在创建独立的应用程序,而是向现有 Windows 应用程序 (Revit) 添加功能。Revit 将实例化该类ThisApplication,然后.OnStartup()在 Revit 应用程序启动时调用其方法。不过,这不应阻止您向项目添加 .xaml 或 .cs 文件。我可以使用 VS Community 2015 使用Ctrl-Shift-A.
希望这能让您入门 - 我已经能够在 Revit 中实现 WPF UI,而无需任何先前的 WPF 经验,而且我什至不是真正的程序员,所以这绝对是可能的。祝你好运!
附录
如果要将 WPF 元素添加到现有的 Revit 插件,可以按照此处的说明操作:如何连接 xaml 和 xaml.cs 文件
最终,我发现将我的插件代码迁移到由工作示例制作的模板中更容易,您可能也想尝试这种方法。
| 归档时间: |
|
| 查看次数: |
4451 次 |
| 最近记录: |