我有一個Silverlight類庫,名爲MyClassLibrary。試圖使用ResourceDictionary,但它的樣式沒有找到
其中,我有一個用戶控件,稱爲MyControl。
在控制我定義用戶資源:
<UserControl.Resources>
<Style x:Key="ComboBoxStyle" TargetType="ComboBox">
(lots of xaml)
</Style>
</UserControl.Resources>
控制消耗的風格是這樣的:
<ComboBox Style="{ StaticResource ComboBoxStyle }"></ComboBox>
這一切能夠完美的組合框附帶了正確的風格,所以我知道風格寫得正確。
我真正想要的是將樣式放在資源字典中,以便可以在此程序集中使用幾種不同的控件。所以我在SAME程序集中創建了一個資源字典。我稱之爲ResourceDictionary.xaml。
我將Style定義從我的用戶控件移動到資源字典。
所以後來資源字典是這樣的:
<ResourceDictionary
xmlns="etc" >
<Style x:Key="ComboBoxStyle" TargetType="ComboBox">
(lots of xaml)
</Style>
</ResourceDictionary>
控制的用戶資源,現在看起來是這樣的:
<UserControl.Resources>
<ResourceDictionary
Source="/MyClassLibrary;component/ResourceDictionary.xaml" x:Name="resDict"/>
</UserControl.Resources>
而控制作爲前仍消耗的風格完全相同的方式。
現在我知道它正在查找ResourceDictionary.xaml文件,因爲我試圖將「Source」屬性更改爲NonExistentFile.xaml,並且它抱怨說它無法找到該文件。它沒有對ResourceDictionary.xaml提出這種抱怨,所以我認爲它找到了它。
但是,當我運行該應用程序時,出現「無法使用名稱/鍵ComboBoxStyle查找資源」的錯誤。
我在做什麼錯?這看起來很簡單,並且不起作用。
在此先感謝您提供的任何幫助。
Repro:創建一個SilverlightClassLibrary,添加一個「Silverlight用戶控件」,添加一個「Silverlight資源字典」。將一個樣式(稱爲MyStyle)添加到資源字典(對於ContentControl前景紅色),將一個ContentControl添加到用戶控件中,指向{StaticResource MyStyle}中的Style。最後,使用Source路徑將ResourceDictionary添加到usercontrol資源中,就像您擁有它一樣。將Silverlight應用程序添加到解決方案中,引用類庫項目,將庫控件的實例添加到MainPage的Xaml。運行,工作正常,如預期的那樣具有紅色前景。 – AnthonyWJones 2010-01-30 18:35:21
換句話說,我看不出你在做什麼有什麼問題。你能提供任何其他細節,可能會使你所做的與Repro不同嗎? – AnthonyWJones 2010-01-30 18:37:10