2009-12-18 63 views
6

我有一个silverlight类库(不是顶级应用程序),其中包含由不同的silverlight应用程序共享的多个用户控件。我已经完成并为控件提取了几种样式和画笔,并将它们放在单独的XAML文件中作为资源字典,作为合并资源字典带入每个控件。现在,只要我将该资源字典作为“资源”构建操作并以这种方式从控件中引用,就可以在我的顶级应用程序中很好地工作。Silverlight类库的打包ResourceDictionary

我真的很想做的就是将这个资源字典的XAML文件作为一个“内容”构建操作,它被复制到顶层的XAP中,这样XAML就可以在XAP文件中被换出而不需要重建项目。每当我尝试设置它时,XAML文件将被复制到类库项目的输出文件夹中,但它永远不会被复制到我的顶级Silverlight应用程序项目输出目录或最终的XAP文件中。

完成此操作的最佳方法是什么? XAML资源字典本质上是类库的依赖关系,(用户控件的)类库是顶级Silverlight应用程序的依赖关系。

回答

1

的ControlResources.xaml(你在XAP想要的资源字典)添加到顶级XAP项目作为链接通过项目 - >添加现有项目 - >添加为链接(对话框中添加按钮上的下拉项目),并将其设置为内容。

+0

这似乎是最好的方法,只是有一种烦人的方式,既有Silverlight类库的引用,也有Silverlight应用程序中的其中一个输出文件的链接。猜测这是它在没有一些构建后的XAP重新包装hackery的情况下获得XAP的唯一方法。 – 2009-12-28 19:17:07

+0

在测试了更多东西之后,此方法在运行时正常工作,但似乎不是“可混合的”。在Expression Blend中打开顶级Silverlight应用程序时,我遇到了一大堆错误......似乎Blend无法在控件类库的ResourceDictionary中追踪项目中的链接。关于如何让Blend发挥出色的任何想法?如果我无法在Blend中正确打开项目,此解决方案不会削减它。 – 2009-12-28 21:05:12

0
+0

合并的资源字典是我正在使用的,所以将样式和画笔保存在单独的XAML文件中,问题是字典是我共享的Silverlight类库的一部分,而不是Silverlight应用程序。当我将构建操作设置为“内容”和“复制始终”时,它永远不会被复制到我的应用程序XAP文件中。试图从最终的XAP中的依赖类库中找到打包和引用资源的最佳方法。 – 2009-12-18 16:51:11

+0

在http://thoughtjelly.blogspot.com/2009/10/cross-project-mergeddictionaries-in.html – 2009-12-19 12:38:30

+1

中查看跨项目合并的资源文件OP指定的目标是能够交换共享资源XAML文件脱离XAP文件而不重建。在Mark的文章中引用的共享资源组装策略似乎不会实现这一点。在不重建的情况下交换此XAML将需要它是XAP中的内容文件(未编译到程序集中)。我知道要完成的唯一方法就是在构建Silverlight应用程序项目时使用“内容”构建项目 - 因此链接的项目文件项目是这里的一种方式。 – 2009-12-22 16:12:57