2017-06-12 53 views
0

我們有一個使用模板10的UWP應用程序。資源位於同一解決方案中的UWP類庫中。當我們運行程序,我們得到的錯誤UWP類庫中的參考資源字典

{Windows.UI.Xaml.Markup.XamlParseException:無法找到資源「MS-資源:///文件/樣式\ ButtonStyle.xaml」。

在App.xaml中,我們有

<ResourceDictionary.MergedDictionaries> 
    <ResourceDictionary Source="Styles\Custom.xaml" /> 
    <ResourceDictionary Source="Styles\ButtonStyle.xaml"/> 
    <ResourceDictionary Source="Styles\ListsStyle.xaml"/> 
</ResourceDictionary.MergedDictionaries> 

我們

Windows 10 Universal Merged Dictionaries

<ResourceDictionary.MergedDictionaries> 
    <ResourceDictionary Source="ms-appx:///Styles/Custom.xaml" /> 
    <ResourceDictionary Source="ms-appx:///Styles/ButtonStyle.xaml"/> 
    <ResourceDictionary Source="ms-appx:///Styles/ListsStyle.xaml"/> 
</ResourceDictionary.MergedDictionaries> 

遵循的指導,則誤差

{Windows.UI.Xaml.Markup.XamlParseException:無法分配給屬性'Windows.UI.Xaml.ResourceDictionary.Source',因爲類型'Windows.Foundation.String'不能分配給類型...

我們也試圖解決在ResourceDictionary in separate library

<ResourceDictionary.MergedDictionaries> 
    <ResourceDictionary Source="pack://application:,,,/LibraryName;component/Styles/Custom.xaml" /> 
    <ResourceDictionary Source="pack://application:,,,/LibraryName;component/Styles/ButtonStyle.xaml"/> 
    <ResourceDictionary Source="pack://application:,,,/LibraryName;component/Styles/ListsStyle.xaml"/> 
</ResourceDictionary.MergedDictionaries> 

那麼錯誤是

{Windows.UI.Xaml.Markup.XamlParseException:無法從包找到資源://應用:,, ,/ LibraryName; component/Styles/Custom.xaml'

我們如何在UWP類庫中引用ResourceDictionary?

+3

您沒有正確執行第二個操作。你的項目名稱在鏈接中哪裏? –

回答

2

正如@Justin指出的那樣,這裏的問題是您忘記了在您的URI中添加類庫名稱。假設您的解決方案中有一個名爲「ClassLibrary1」的UWP類庫。然後你可以將它們合併喜歡:

<ResourceDictionary> 
    <ResourceDictionary.MergedDictionaries> 
     <ResourceDictionary Source="ClassLibrary1/Styles/Custom.xaml" /> 
     <ResourceDictionary Source="ClassLibrary1/Styles/ButtonStyle.xaml"/> 
     <ResourceDictionary Source="ClassLibrary1/Styles/ListsStyle.xaml"/> 
    </ResourceDictionary.MergedDictionaries> 
</ResourceDictionary> 

或者

<ResourceDictionary> 
    <ResourceDictionary.MergedDictionaries> 
     <ResourceDictionary Source="ms-appx:///ClassLibrary1/Styles/Custom.xaml" /> 
     <ResourceDictionary Source="ms-appx:///ClassLibrary1/Styles/ButtonStyle.xaml"/> 
     <ResourceDictionary Source="ms-appx:///ClassLibrary1/Styles/ListsStyle.xaml"/> 
    </ResourceDictionary.MergedDictionaries> 
</ResourceDictionary> 

也不要忘記「ClassLibrary1的」添加到您的主項目的參考

此外,如果你的類庫是不是在同一個解決方案,那麼你將需要檢查的類庫的屬性頁下構建配置「生成庫佈局」選項。

因爲在WinRT環境中,資源不再嵌入在程序集中,而是作爲內容放在dll旁邊。所以我們需要生成庫佈局,以便我們可以方便地引用其他項目中的dll。欲瞭解更多信息,請參閱my previous answer