2009-12-18 35 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