我有一个dll,我们的客户集成了提供UserControls,我想允许样式覆盖。在Windows应用商店中,我可以这样做:
<ResourceDictionary
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="ms-appx:///MyDLL/Assets/Styles/Default.xaml"/>
<ResourceDictionary Source="ms-appx:///OverrideStyles.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
并找到用户应用中定义的本地AppboyStyles.xaml。我无法弄清楚Windows Phone 8的正确URI以允许类似的功能。
编辑:
假设我在A.dll中有UserControl1,而UserControl1有一个样式资源字典,如下所示:
<ResourceDictionary
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="/A;component/Assets/Styles/Default.xaml"/>
<ResourceDictionary Source="/TestApp;component/Assets/Styles/Override.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
这实际上可以在TestApp中运行,但我无法对一个调用应用程序进行硬编码,因为它是一个要分发的库。所以我需要一种方法来替换调用app dll名称,或者使用一个评估当前应用程序资源的URI。