當我包括使用下面的包語法包含ResourceDictionary中的組件:WPF資源字典使用隱藏文件中的代碼無法找到
"pack://application:,,,/WpfCore;component/ResourceDictionaries/ThemedControls.xaml"
它工作正常,但只要我添加的代碼背後文件到ResourceDictionary中的XAML,下面的錯誤被拋出:
< ResourceDictionary x:Class="com.mycompany.WpfCore.ResourceDictionaries.ThemedControls"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006">
</ResourceDictionary>
:
後面的代碼添加到XAML通常的方式「而尋找資源字典時發生錯誤」
,看起來像這樣:
namespace com.mycompany.WpfCore.ResourceDictionaries
{
public partial class ThemedControls : ResourceDictionary
{
public ThemedControls()
{
InitializeComponent();
}
}
}
直覺告訴我,這是一個命名空間的問題,但我已經試過了變化失敗。我做錯了什麼或者這是WPF ResourceDictionaries的限制嗎?
編輯:
似乎是問題的細節叫出來,發現是希望。
最初的例子有簡化的命名空間。 WpfCore項目的默認名稱空間是com.mycompany.WpfCore,我現在已將其添加到上面的代碼示例中。
ThemedControls.xaml和ThemedControls.xaml.cs文件位於WpfCore項目文件夾內名爲ResourceDictionaries的子文件夾中。 生成的程序集在另一個解決方案中用作引用程序集,這是使用Pack URI的地方。
編輯2:
與XAML文件生成操作玩耍後(從頁更改爲資源,然後再返回),事情開始工作。標記謝里登的答案是正確的。
爲什麼要添加代碼隱藏文件的ResourceDictionary? –
後面的代碼根據運行時系統信息合併其他字典,即不同的操作系統的不同資源字典。 – user1582409