【发布时间】:2017-07-28 10:44:49
【问题描述】:
在 wpf.dll 中,我在 ResourceDictionary XAML 中使用键 MorphControl 定义了一个 DataTemplate:
<ResourceDictionary>
<DataTemplate x:Key="MorphControl">
<n1:m1 />
</DataTemplate>
</ResourceDictionary>
如果这个wpf.dll被一个exe调用(比如A.exe),那么我希望上面的FindResource("MorphControl")返回m1相关资源。
但是,wpf.dll 有可能被另一个 exe(比如 B.exe)调用,在 B.exe 中,相同的键被重新定义为使用另一个值,即在 B.exe 中,这个定义存在:
<ResourceDictionary>
<DataTemplate x:Key="MorphControl">
<n2:m2 />
</DataTemplate>
</ResourceDictionary>
所以当B.exe调用时,我希望FindResource["MorphControl"]返回m2相关资源。
我想为A.exe 和B.exe 使用相同的wpf.dll。而且我不想将MorphControl 定义从wpf.dll 移动到A.exe——它必须保留在wpf.dll。
此外,这个特定的资源键必须始终保持不变,因为在 wpf.dll 内部,我有一个我不想触碰的 DataTemplateSelector 逻辑
如何做到这一点,或者这可能吗?
【问题讨论】:
-
这听起来很像
TemplateSelector,可以调用你的WPF.dll。但是你的WPF.dll是如何组织起来的?你必须在你的WPF.dll中有某种机制,它需要一些参数,然后尝试将它们与可用资源匹配。 -
@XAMlMAX,
TemplateSelector使用唯一的密钥对。在这种情况下,密钥必须相同
标签: c# wpf xaml datatemplate resourcedictionary