使用多個資源字典我有兩個類庫項目: 項目A.Themes 項目B.ThemesWPF從多個項目
項目A.Themes是我的基地主題項目。 項目B.Themes使用A.Themes和有新的樣式和一些資源有已經在A.Themes中定義的鍵。
我們希望在我們的項目中使用這兩個主題,如果我們使用在兩個項目中定義的資源,我們想從B.Themes中獲取資源。
這是我們的代碼:
A.Themes有款式幾個文件:
Brushes.xaml
Buttons.xaml
CheckBox.xaml
等。
我們加載它們在Bundle.Xaml:
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="pack://application:,,,/A.Themes;component/Assets/Brushes.xaml"/>
<ResourceDictionary Source="pack://application:,,,/A.Themes;component/Assets/Buttons.xaml"/>
<ResourceDictionary Source="pack://application:,,,/A.Themes;component/Assets/CheckBox.xaml" />
</ResourceDictionary.MergedDictionaries>
B.Themes有相同的文件:
Brushes.xaml
Buttons.xaml
CheckBox.xaml
我們加載它們在Bundle.Xaml並加入A.Themes束:
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="pack://application:,,,/A.Themes;component/Bundle.xaml"/>
<ResourceDictionary Source="pack://application:,,,/B.Themes;component/Assets/Brushes.xaml"/>
<ResourceDictionary Source="pack://application:,,,/B.Themes;component/Assets/Buttons.xaml"/>
<ResourceDictionary Source="pack://application:,,,/B.Themes;component/Assets/CheckBox.xaml" />
</ResourceDictionary.MergedDictionaries>
在我們的項目中,我們加載它們在App.xaml中:
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="pack://application:,,,/A.Themes;component/Bundle.xaml"/>
<ResourceDictionary Source="pack://application:,,,/B.Themes;component/Bundle.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>
的問題是: 1.它並不總是需要B.Themes的資源,我們無法找出原因。 2.如果我從App.xaml中的項目中刪除參考A.Themes/Bundle.xaml無法找到A.Themes資源,即使它包含在B.Themes/Bundle.xaml
注: 我們參考B.Themes中的A.Themes項目 並參考主題中的A.Themes和B.Themes項目
有人可以幫我理解這裏發生了什麼嗎? 謝謝!
我的猜測:你可能對合並資源字典沉默異常,因爲你有重疊的資源名稱。一旦我有這樣的事情(雖然錯誤來源不同),我用IlSpy反編譯應用程序。它沒有設法反編譯一些資源字典(或部分做了,現在不記得了),這幫助我追蹤根源。 –
我看到我有錯誤「值不能爲空。參數名稱:項目」。在B.Themes/Bundle.xaml – StackOverflowUser