2016-07-21 22 views
0

Ich möchte eine StaticResource überschreiben, die in einem Ressourcenwörterbuch einer anderen Assembly in meinem eigenen Ressourcenwörterbuch konfiguriert ist. Ich habe versucht, eine neue Ressource mit demselben Schlüssel ohne Erfolg zu konfigurieren. Die Ressource, die tatsächlich geladen wird, stammt aus dem Ressourcenwörterbuch der genannten Assembly.Eine statische Ressource in WPF überschreiben

Zu Demonstrationszwecken werde ich die Ressource "MyResource" nennen:

MyResourceDictionary.xaml:

<ResourceDictionary xmlns=...> 
    <!-- I use the same key as the original resource, from the other assembly --> 
    <DataTemplate x:Key="MyResource"> 
     <!--My own implementation of that resource --> 
    </DataTemplate> 
</ResourceDictionary> 

App.xaml

<Application x:Class=...> 
    <Application.Resources> 
     <ResourceDictionary> 
      <ResourceDictionary.MergedDictionaries> 
       <!-- Resource dictionary from different assembly --> 
       <ResourceDictionary Source="pack://application:,,,/Assembly;component/ResourceDictionary.xaml"/> 
       <!-- My resource dictionary --> 
       <ResourceDictionary Source="pack://application:,,,/MyApplication;component/ResourceDictionary.xaml"/> 
      </ResourceDictionary.MergedDictionaries> 
     </ResourceDictionary> 
    </Application.Resources> 
</Application> 
+0

Mögliche Duplikat http://stackoverflow.com/questions/8097725/multiple-resourcedictionary-with-same-datatemplate-key –

+0

Beachten Sie, dass WPF nicht verhalten, wie Sie beschrieben - Wie Sie in der obigen Antwort sehen können, sieht es Wörterbücher von der zuletzt hinzugefügten zuerst hinzu. Also muss es noch etwas geben, das du vermisst. Möglicherweise wurde ein falscher Name verwendet? –

Antwort

-1

Ist das nicht ein Gute Übung in WPF, um zu versuchen, das DataTemplate zu überschreiben. Stattdessen sollten die Vorlagen "ersetzt" oder besser gesagt mit TemplateSelector ausgewählt werden. Werfen Sie einen Blick auf dieses Beispiel: template selector microsoft