我发现了这个:Close Window from ViewModel这让我开始修改我的 DelegateCommand 类来处理参数。但我无法解决语法问题。
这是我的 DelegateCommand 类,以及我尝试创建但收效甚微的 DelegateCommand 类:
public class DelegateCommand : ICommand
{
private readonly Action _action;
public DelegateCommand(Action action)
{
_action = action;
}
public void Execute(object parameter)
{
_action();
}
public bool CanExecute(object parameter)
{
return true;
}
#pragma warning disable 67
public event EventHandler CanExecuteChanged { add { } remove { } }
#pragma warning restore 67
}
public class DelegateCommand<T> : ICommand
{
private readonly Action _action;
public DelegateCommand(Action action) …Run Code Online (Sandbox Code Playgroud) 我想重写我的 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 。。。我从头开始,复制到另一个项目中创建的窗口中并让它运行(在添加各种引用、命名空间等之后)。所以我的问题似乎只是与原始项目有关,它已经添加了一堆表单内容。