工作流基础 4 导入面板未刷新



我想将一个新的引用导入到我的工作流设计器中,但是我遇到了一个奇怪的问题。

这是我导入引用的代码。

var root = GetRootElement();
VisualBasicSettings vbs = VisualBasic.GetSettings(root);
vbs.ImportReferences.Add(new VisualBasicImportReference { Assembly = Assembly.Load("Castle.Core").FullName, Import = "Castle.Core.Configuration.Xml" });
private object GetRootElement()
{
     var modelservice = workflowDesigner.Context.Services.GetService<ModelService>();
     if (modelservice == null)
         return null;
     var rootmodel = modelservice.Root.GetCurrentValue();
     return rootmodel;
}

当我第一次加载我的设计器时,它可以工作,程序集很好地添加到哈希集 ImportReferences 中,然后我还在"导入"面板中看到了命名空间。但是当我调用上面的方法时,当用户通过选取器对话框选取一个 dll 时,我调用上面的代码,程序集也很好地添加到 ImportReferences 中,但"导入"面板没有刷新......

有什么想法吗?

感谢您的帮助。

你试过 DesignerView.OnReferenceUpdated 吗?这似乎是你要找的:

如果添加了引用的程序集,则找到的类型的命名空间 添加到导入的命名空间列表中。如果 引用的程序集被删除,在 中找到的类型的命名空间 程序集将从导入的命名空间列表中删除。

使用示例:

var designerView = workflowDesigner.Context.Services.GetService<DesignerView>();
designerView.OnReferenceUpdated(assemblyName, true/false);

实际上,命名空间导入得很好,它隐藏在上面的下拉列表中。

下面是导入命名空间的最简单代码。http://blogs.msdn.com/b/tilovell/archive/2011/11/02/wf4-adding-vb-namespace-imports-to-your-workflow-programmatically.aspx

最新更新