我有自定義的類,我當前在App.xaml中實例化爲資源。我想將這些自定義對象移動到合併ResourceDictionary中,在樣式中使用它們,並使它們保持靠近它們的使用位置。 這裏有我想要的東西,隨意使用僞造的轉換器對象的例子,但它們可以是任何自定義對象...Silverlight 3 - 在合併的ResourceDictionary中創建自定義對象
的App.xaml(命名空間聲明ommitted):
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="Merged.xaml" />
</ResourceDictionary.MergedDictionaries>
<Style x:Key="SomeStyle" TargetType="SomeControl">
...
</Style>
...
</ResourceDictionary>
而且然後在Merged.xaml(命名空間聲明省略):
<ResourceDictionary>
<cvt:VisibilityToBoolConverter x:Key="BoolToVisibility" Inverted="True"/>
<cvt:VisibilityToBoolConverter x:Key="NotBoolToVisibility" Inverted="True" Not="True"/>
<Style x:Key="SomethingThatUsesVisibilityToBoolConvertersStyle" TargetType="SomeOtherControl">
....
</Style>
</ResourceDictionary>
我看到的問題是這樣的:當我創建了BoolToVisibility和Not BoolToVisibility對象(以及實例化作爲我創建的自定義類的實例的其他對象)與Application.Resources一樣,它們被創建並且所有引用都按預期工作;但是,當我將它們移動到合併資源字典中時(如上面示例中所示),Silverlight應用程序加載時會出現格式錯誤的應用程序異常。
我相信這是合併資源字典中實例化對象的一個問題(我相信它更像是一種惰性加載方法),但我希望它仍然有效。
我非常能夠添加Style對象,DataTemplates,ControlTemplates等。但是當我想創建使用Xaml命名或鍵入的自定義類的實例時,它在App.xaml的Application.Resources中直接運行,而且在Application.Resources/ResourceDictionary中運行也很好。只要它們被移入合併的字典中,它就會拋出異常。這是設計嗎?任何其他想法的工作?在此先感謝...