我正在制作一个将在 VS 拖放设计器中使用的组件。此组件的属性之一需要是项目中文件的包 URI。
我想让事情变得简单一些,在 PropertyGrid 用于我的类型属性的属性编辑器中,检查解决方案,构建 Uris 并将它们呈现给用户以供选择。
这可能吗?而且,如果是这样,我能否获得一些关于如何解决此问题的指示和入门指南?
我正在制作一个将在 VS 拖放设计器中使用的组件。此组件的属性之一需要是项目中文件的包 URI。
我想让事情变得简单一些,在 PropertyGrid 用于我的类型属性的属性编辑器中,检查解决方案,构建 Uris 并将它们呈现给用户以供选择。
这可能吗?而且,如果是这样,我能否获得一些关于如何解决此问题的指示和入门指南?
我认为这有几个方面。
1) 您可以为属性创建自己的类型编辑器,以决定如何使用属性网格将属性值呈现给用户。
为此,您需要创建一个类型编辑器,从 UITypeEditor 继承,如下所示。
public class UriListUIEditor : UITypeEditor
{
//Override a couple of methods
}
查看此 codeproject 文章以查看一个简单的示例。http://www.codeproject.com/KB/edit/flagenumeditor.aspx
现在,提供您的属性的 EditorType 属性,例如
[Editor(typeof(Utils. UriListUIEditor ),
typeof(System.Drawing.Design.UITypeEditor))]
public string Uri
{ get;set;
}
2) 要在您的项目中迭代解决方案,请获取当前的 DTE 实例
var dte = (EnvDTE80.DTE2)System.Runtime.InteropServices.Marshal. GetActiveObject("VisualStudio.DTE.8.0");
并遍历所有项目以构建列表或 URI 或任何东西。理想情况下,您可以在上述 UriListUIEditor 的 EditValue 方法中执行此操作。
foreach (var project in dte.Solution.Projects)
{
}
希望这可以帮助
这是仅用于 WPF 项目的组件吗?那么你可能很幸运。这里写一篇。http://www.wiredprairie.us/journal/2007/06/pack_syntax_in_wpf.html。或者这个 MSDN 示例可以帮助http://msdn.microsoft.com/en-us/library/aa972152(VS.85).aspx