我正在处理另一个应用程序中托管的应用程序。两者都包含在不同项目的同一解决方案中。
在托管应用程序的资源字典中,我有以下DataTemplate
:
<DataTemplate x:Key="DefaultTemplate">
<templates:Template1/>
</DataTemplate>
我要做的是覆盖托管应用程序x:Key
中的ResourceDictionary
“DefaultTemplate”:
<DataTemplate x:Key="DefaultTemplate">
<views:Template2/>
</DataTemplate>
在托管应用程序的应用App.xaml
中,资源字典配置如下:
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="pack://application:,,,/HostedApplication;component/ResourceDictionary.xaml"/>
<ResourceDictionary Source="pack://application:,,,/HostingApplication;component/HostingResourceDictionary.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>
我的期望是托管应用程序的资源字典将覆盖所需的密钥,但由于某种原因,这不起作用。我还尝试更改顺序,并将托管应用程序的资源字典放在第一位。
非常感谢您的帮助。
修改
我尝试将资源配置为DynamicResource
,并抛出以下异常:
Additional information: A 'DynamicResourceExtension' cannot be set on the 'DetailTemplate' property of type 'ZoomAndTemplateControlConverter'. A 'DynamicResourceExtension' can only be set on a DependencyProperty of a DependencyObject.
这可能与资源传递给转换器的属性这一事实有关:
<converters:TemplateConverter x:Key="TemplateConverter"
Template1="{DynamicResource DefaultTemplate}"
Template2="{StaticResource SecondaryTemplate}"/>