Dot-Net

pack://application:,,,/ResourceFile.xaml 從不工作

  • February 18, 2020

我從來沒有能夠讓這種引用格式的資源字典起作用。我錯過了什麼。

設想:

在其中創建和組裝一些使用者控制項。

在根目錄下,文件**{root}/Themes/ColorThemes.xaml**

ColorThemes.xaml 文件的建構操作設置為Resource

然後在 xaml 文件中再往下說**{root}/Controls/ButtonStyles/Themes/ButtonThemes.xaml**(注意路徑只是一個例子)在這個文件中我有以下程式碼:

<ResourceDictionary.MergedDictionaries>
   <ResourceDictionary Source="pack://application:,,,/Themes/ColorThemes.xaml"/>
</ResourceDictionary.MergedDictionaries>

文件所述,這應該可以工作(據我所知),當我在設計器中時,它似乎很好(所有顏色都載入等)但是當我去編譯我的應用程序並執行它時,我得到了這個錯誤{“無法找到資源’themes/colorthemes.xaml’。”}這很奇怪,因為它似乎在建構器中使用得很好。所以我很困惑,因為它似乎與文件不一致。
所以如果有人可以向我解釋我錯過了什麼:)

注意:如果我將以前的程式碼更改為

<ResourceDictionary.MergedDictionaries>
   <ResourceDictionary Source="../../../Themes/ColorThemes.xaml"/>
</ResourceDictionary.MergedDictionaries>

它工作正常,但是對於 cleanese pack://application: 。

嘗試:

pack://application:,,,/YOURNAMESPACEHERE/ColorThemes.xaml

例如

pack://application:,,,/Themes/ColorThemes.xaml

無法重現您的問題。所有這些變化都可以正常工作:

<ResourceDictionary.MergedDictionaries>
   <ResourceDictionary Source="pack://application:,,,/Themes/ColorThemes.xaml"/>
   <ResourceDictionary Source="/Themes/ColorThemes.xaml"/>
   <ResourceDictionary Source="../../Themes/ColorThemes.xaml"/>
</ResourceDictionary.MergedDictionaries>

請注意,這pack://application:,,,是可選的,/指的是目前程序集的根。

請提供完整的最小範例來重現您的問題。

引用自:https://stackoverflow.com/questions/22289367