我正在制作一个将在VS拖放设计器中使用的Component。此组件的其中一个属性需要是项目中文件的包URI。
我想让事情变得简单一点,从属性编辑器中,PropertyGrid用于我的类型属性,检查解决方案,构造Uris并将它们呈现给用户进行选择。
这可能吗?而且,如果是这样的话,我可以得到一些关于如何解决这个问题的指导和起点吗?
答案 0 :(得分:1)
这是仅适用于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
答案 1 :(得分:1)
我认为这有几个方面。
1)您可以为属性创建自己的类型编辑器,以决定如何使用属性网格向用户显示属性值。
为此,您需要创建一个类型编辑器,继承自UITypeEditor,就像这样。
public class UriListUIEditor : UITypeEditor
{
//Override a couple of methods
}
看看这个代码项目文章,看一个简单的例子。 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)
{
}
希望这有帮助