我有自定义的类,我当前在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中运行也很好。只要它们被移入合并的字典中,它就会抛出异常。这是设计吗?任何其他想法的工作?在此先感谢...