3

我正在基于CodePlex 上提供的优秀 Mockups 库创建一系列窗口模型模板。

我也使用他们的 BaseMockup 作为我的控件的基础,并且我按照此处列出的步骤的相同大纲从现有控件中子派生(创建一个新的空类,将默认样式添加到 /Themes/generic. xml 等)

该控件运行良好 - 唯一的问题是它没有显示在资产库中。我认为这是因为它是子派生的,或者因为我需要一些属性(相当于WinForms 控件的 ToolboxItemAttribute?...这不起作用)来连接它。

当我修改代码以直接从 Control 派生时,它会显示出来 - 不需要自定义属性。当然,这违背了我试图做的事情的目的......

我唯一能找到的是几篇 文章 告诉我要使用注册表项,但没有一篇文章清楚或建议用 Blend 4 做到这一点的明确方法。最后一篇宣传为 Blend 4 技巧文章,但承认最后它抄袭其他两个的内容(对于Blend 3)。

这是我唯一的选择 - 注册我的 DLL?有一个更好的方法吗?

4

3 回答 3

1

不久前,我写了一篇关于此的博文。我已经包含了一个 .reg 文件和一个 .bat 文件,用于设置寄存器和一些目录。我想这就是你要找的。

于 2011-08-16T22:20:38.563 回答
1

我相信您确实需要使用注册表项。具体来说,

32 位:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NET Framework\v4.0.30319\AssemblyFoldersEx

64 位:HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\.NET Framework\v4.0.30319\AssemblyFoldersEx

使用您的控件程序集的名称创建一个新密钥。然后编辑此键下的默认字符串值,并将值设置为安装控件程序集的目录。 有关完整示例,请参见此处(使用 Silverlight 路径)。

于 2011-08-17T02:33:06.803 回答
1

找到了——毕竟有一个类似的属性,它是ToolboxBrowsableAttribute

您必须经历更多的繁琐才能设置它,但它工作得很好 - 不需要注册表。它需要创建一个设计器元数据提供程序类,将您的程序集归于设计人员可发现的属性,然后将属性添加到您的元数据提供程序内的子派生控件。

确保为您的 Visual Studio 版本选择合适的页面版本,因为界面在 2008 年和 2010 年之间发生了很大变化。

这篇关于 CodeProject的文章有一些很好的、真实的例子来设置它。不过,它们都是 2008 年的风格,所以如果您使用的是 2010 年,请记住这一点。

于 2011-08-18T18:41:54.657 回答