访问 Visual Studio 属性属性网格中的项目文件结构?

发布于 2024-07-25 14:14:03 字数 193 浏览 7 评论 0原文

我正在制作一个将在 VS 拖放设计器中使用的组件。 该组件的属性之一必须是项目内文件的包 URI。

我想让事情变得简单一些,在 PropertyGrid 用于我的类型属性的属性编辑器中,检查解决方案、构造 Uris 并将它们呈现给用户进行选择。

这可能吗? 如果是这样,我可以获得一些关于如何解决这个问题的指导和入门指南吗?

I'm making a Component that will be used in a VS drag and drop designer. One of the properties on this component needs to be the pack URI of a file within the project.

I'd like to make things a little easy and, from within the property editor the PropertyGrid uses for my type's property, examine the solution, construct the Uris and present them to the user for choosing.

Is this possible? And, if so, can I get some pointers and where-to-starters on how to go about this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

纵山崖 2024-08-01 14:14:03

这是一个仅适用于 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

Is this a component that is for WPF projects only? Then you may be in luck. Here's a write up. http://www.wiredprairie.us/journal/2007/06/pack_syntax_in_wpf.html. Or this MSDN sample may help http://msdn.microsoft.com/en-us/library/aa972152(VS.85).aspx

も让我眼熟你 2024-08-01 14:14:03

我认为这有几个方面。

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)
        {

        }

希望这可以帮助

I think there are a couple of peices to this.

1) You can create your own type editors for a property, to decide how the property values are presented to the users using the property grid.

For this, you need to create a type editor, inheriting from UITypeEditor, like this.

public class UriListUIEditor : UITypeEditor
{
       //Override a couple of methods
}

Have a look at this codeproject article to see a simple example. http://www.codeproject.com/KB/edit/flagenumeditor.aspx

Now, provide the EditorType attribute of your property, like

   [Editor(typeof(Utils. UriListUIEditor ), 
             typeof(System.Drawing.Design.UITypeEditor))]
    public string Uri 
             { get;set;
             }

2) To iterate solutions in your project, get the current DTE Instance

 var dte = (EnvDTE80.DTE2)System.Runtime.InteropServices.Marshal. GetActiveObject("VisualStudio.DTE.8.0"); 

And Iterate through all the projects to build the list or URIs or anything. Ideally you do this inside the EditValue method of the above UriListUIEditor.

  foreach (var project in dte.Solution.Projects)
        {

        }

Hope this helps

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文