我把我的應用程序的資源在一個單獨的DLL和使用這樣的事情在App.xaml中引用它們在我的主EXE: -WPF在每個用戶控件中合併資源字典 - 壞主意?
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="pack://application:,,,/MyThemesAssembly;component/Themes/Generic.xaml"/>
</ResourceDictionary.MergedDictionaries>
當我編輯窗口,在主EXE項目,Visual Studio 2010的設計師無法識別來自其他程序集的任何資源,所以我沒有看到任何樣式應用(不是真正的問題,因爲我總是在XAML視圖中工作)。但是,Resharper不會識別這些外部資源名稱,因此在編輯XAML時會導致資源名稱下出現大量的錯誤。
我發現我可以通過在每個窗口和用戶控件中包含上面的XAML來修復VS設計器和Resharper,但是這會對內存和/或性能產生不利影響嗎?每個窗口會獲得資源的單獨副本嗎?
那麼,IDE和工具中的錯誤不應該影響你的代碼。此外,在每一個控件中包含資源字典都是一種容易出錯的方式(如果您決定重命名字典以添加另一個字符,該怎麼辦?)。 – Vlad
然而,我會嘗試在設計模式中添加一個解決問題的怪癖。 (也許這將有助於:'public class MyUserControlBase:UserControl {public MyUserControlBase(){if(DesignerProperties.GetIsInDesignMode(this))LoadExternalDictionariesExplicitlyHere(); ...') – Vlad
@Vlad我已經學會了生活在一起的浪漫 - 這修復Resharper的方法實際上只是一個「很好有」。我不認爲重命名/添加資源會是一個問題 - 在我上面的XAML示例中,「Generic.xaml」本身只是合併了該程序集中的其他資源,因此很容易添加新資源。我更關心在每個窗口中包含是否會打擊應用程序(或VS2010)的內存/性能。 –