从托管应用程序

时间:2016-07-20 09:23:17

标签: .net wpf xaml datatemplate resourcedictionary

我正在处理另一个应用程序中托管的应用程序。两者都包含在不同项目的同一解决方案中。

在托管应用程序的资源字典中,我有以下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}"/>

0 个答案:

没有答案