我有当前在 App.xaml 中作为资源实例化的自定义类。我想将这些自定义对象移动到 Merged ResourceDictionary 中,在样式中使用它们,并让它们靠近使用它们的位置。这是我想要的一个例子,任意使用假转换器对象,但它们可以是任何自定义对象......
App.xaml(省略命名空间声明):
<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 和 NotBoolToVisibility 对象(以及实例化作为我创建的自定义类的实例的其他对象)时,就像 Application.Resources 的一部分一样,它们被创建并且所有引用都按预期工作; 但是,当我将它们移动到合并资源字典中时(正如我在上面的示例中所做的那样),当 Silverlight 应用程序加载时,我得到一个格式错误的应用程序异常。
我相信这是在合并资源字典中如何以不同方式实例化对象的问题(我相信这更像是一种延迟加载方法),但我仍然希望它能够工作。
我非常能够添加样式对象、DataTemplates、ControlTemplates 等。但是,当我想创建使用 Xaml 命名或键控的自定义类的实例时,它在 App.xaml 的 Application.Resources 和 Application.Resources/ResourceDictionary 中都非常有效。一旦它们被移动到一个合并的字典中,它就会抛出异常。这是设计使然吗?还有其他可行的想法吗?提前致谢...