2013-10-15 34 views
0

當我包括使用下面的包語法包含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文件生成操作玩耍後(從頁更改爲資源,然後再返回),事情開始工作。標記謝里登的答案是正確的。

+1

爲什麼要添加代碼隱藏文件的ResourceDictionary? –

+0

後面的代碼根據運行時系統信息合併其他字典,即不同的操作系統的不同資源字典。 – user1582409

回答

1

我不認爲你已經很正確地聲明瞭你的ResourceDictionary ......應用程序名稱應該在命名空間中。這應該工作...至少它爲我的作品:

<ResourceDictionary 
    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" 
    x:Class="WpfCore.ResourceDictionaries.ThemedControls"> 
</ResourceDictionary> 

後面的代碼:

namespace WpfCore.ResourceDictionaries 
{ 
    public partial class ThemedControls : ResourceDictionary 
    { 
     public ThemedControls() 
     { 
      InitializeComponent(); 
     } 
    } 
} 
+0

似乎這將在同一解決方案中工作,這不完全是我如何做的。這個問題可能有點模糊,並且已經更新了有關使用程序集作爲引用程序集的更多細節。 – user1582409

+0

啊,抱歉,我還沒有經歷過這種情況,所以我不能再幫忙。 – Sheridan