2012-05-10 7 views

Odpowiedz

1

Coś jak:

ResourceDictionary resources = new ResourceDictionary(); 
resources.Source = new Uri("/MyModule;component/MyModule.xaml", 
    UriKind.RelativeOrAbsolute); 
Application.Current.Resources.MergedDictionaries.Add(resources); 

Może być to, czego szukasz. Używamy takiego kodu w naszych modułach Prism.

3

fragment prosto z SketchFlow projektu pracuję nad, który pokazuje w jaki sposób połączyć słowniki zasobu w XAML:

<Application.Resources> 
    <!-- Resources scoped at the Application level should be defined here. --> 
    <ResourceDictionary> 
     <ResourceDictionary.MergedDictionaries> 
      <ResourceDictionary Source="/Microsoft.Expression.Prototyping.SketchControls;component/ScrollViewerStyles.xaml"/> 
      <ResourceDictionary Source="/[ProjectABC];component/[fileXYZ].xaml"/> 
     </ResourceDictionary.MergedDictionaries> 
    </ResourceDictionary> 
</Application.Resources> 

To pokazuje połączenia dwóch dodatkowych słowników zasobów do innego słownika zasobów.

(Zauważ, że kolejność może stać się ważnym, jeśli masz domyślne style zdefiniowane w więcej niż jednym miejscu, ponieważ będą one nadrzędne siebie)

19

W Dictionary2.xaml określić MergedDictionaries (zaraz po tagu otwarcie ResourceDictionary):

<ResourceDictionary.MergedDictionaries> 
    <ResourceDictionary Source="/Path/to/Dictionary1.xaml" /> 
</ResourceDictionary.MergedDictionaries> 

jest haczyk: za każdym razem, gdy scalasz słowniki, możesz skutecznie utworzyć kopię połączonego słownika. Jest rekursywny - jeśli masz Dict3.xaml i Dict4.xaml, które ładują Dictionary2.xaml, będziesz mieć trzy instancje Dictionary1.xaml utworzone

Rozwiązaniem jest SharedResourceDictionary. Implementacja w samouczku powinna być postrzegana jako punkt wyjścia i prawdopodobnie będzie wymagać pewnego dostosowania - w zależności od scenariusza użycia. Google "wpf SharedResourceDictionary" dla niektórych gier i rozwiązań.

Od odpowiedzi na this question przez XAMeLi

Powiązane problemy