2010-10-21 84 views
1

我有一个自定义控制库(前。MyCustomControls.dll)是一个插件,第三方应用程序。它作为类库输出,并在运行时由第三方应用程序调用。我的问题是我为各种用户控件(如listviewitem)定义的自定义样式,textblock现在无法在应用程序级别加载。加载自定义样式控件库

如何添加我的自定义样式的资源查找层次,使得在库中的所有控件都将使用我的自定义样式?

例如,如果我定义下面的风格,在MyCustomControls.dll所有控件不会看到它在创建时。但是,如果将MyCustomControls.dll添加到应用程序并将其加载到应用程序资源中,则会应用样式。

注:第三方应用程序是不是一个WPF应用程序。 Application.Current在运行时返回null。

回答

1

如果您没有访问第三方应用程序,如果它不是一个WPF应用程序(它是Silverlight的?),你不能注入你的风格写在XAML的WPF。此外,只有第三方应用程序才会知道如何在以后应用皮肤。我想,如果这不是你的应用程序,你可以做的唯一事情就是遵循“制造商的说明”。

仅供参考: 如果你拥有两面 - 主要的应用程序和资源,以插电,你可以使用MergeDictionaries合并资源DLL中为了访问资源的DLL,你需要使用包URI语法。 事情是这样的:

在App.xaml中:

<ResourceDictionary> 
     <ResourceDictionary.MergedDictionaries> 
      <ResourceDictionary Source="pack://application:,,,/YOUR_DLL;component/SUBFOLDER/YOURCUSTOMSTYLES.xaml"/> 
     </ResourceDictionary.MergedDictionaries> 
    </ResourceDictionary> 

在这些场景中,让您的资源等同于那些主要的应用程序期待的关键是很重要的。这是因为典型的蒙皮机制是在使用资源时使用DynamicResource,因此每次使用时都会用“键”查找它们。如果您使用相同的密钥,例如替换为另一个现有的资源,切换一个名为“ButtonBackground”到黄河资源,和应用程序动态使用该资源在整个应用程序的按钮的背景下,所有的按钮应该成为黄。

+0

感谢您的答复。第三方应用程序不是WPF应用程序,我无法控制它。编辑的问题来反映这一点。 – user173884 2010-10-22 15:34:14

+0

我已经更新了我的答案。不幸的是,没有办法找到如何在第三方应用程序中注入资源,特别是非WPF和非Silverlight应用程序。 – 2010-10-22 16:56:12

相关问题