2016-04-12 17 views
1

Beim Versuch, eine globale Klasse in App.xaml einzurichten;WPF Globale Klasse MVVM

<Application.Resources> 
    <local:MySettingsClass x:Key="GlobalSettings" /> 
    <ResourceDictionary > 
     <!-- My Resources --> 
    </ResourceDictionary > 
</Application.Resources> 

Obwohl ich erhalte eine Fehlermeldung von

Jeder Wörterbucheintrag einen zugehörigen Schlüssel müssen.

und

‚App‘ enthält keine Definition für ‚InitializeComponent‘ und keine Erweiterung Methode ‚InitializeComponent‘ ein erstes Argument vom Typ ‚App‘ Annahme gefunden werden (möglicherweise fehlt eine using Richtlinie oder eine Baugruppe Referenz?)

Jetzt kann ich gehen und und eine x:Key-ResourceDictionary aber ich habe noch nie jemand tun, gesehen, so dass falsch zu sein scheint. Die zweite Fehlermeldung führt mich zu der Annahme, dass ich das falsch mache.

Habe ich die falsche Lösung für dieses Problem oder ist etwas einfach ich vermisse?

Antwort

3

Application.Resources ist implizit ein Ressourcenwörterbuch. Du könntest einfach die Ressourcen dort drängen. Dies wäre gültig:

<Application.Resources> 
    <local:MySettingsClass x:Key="GlobalSettings" /> 
    <!-- Pretty much anything with an x:Key attribute. --> 
</Application.Resources> 

Aber wenn Sie Wörterbücher sind verschmelzenden Sie die explizite <ResourceDictionary> Tag tun müssen, und in der Regel in App.xaml Sie verschmelzenden Wörterbücher.

Das Problem, das Sie bekommen, ist, dass in Ihrem XAML, das erste, was es sieht, Ihre GlobalSettings Ressource vor allem ist. Das ist das Erste, was es sieht, also ist es OK, er schlägt hier nur ein paar Ressourcen. Es erstellt eine ResourceDictionary und fügt alles hinzu, was es sieht. Das nächste, was es sieht, ist <ResourceDictionary>, und es denkt, dass Sie versuchen, ein anderes Ressourcenwörterbuch zu dem ersten als Ressource hinzuzufügen, aber ohne ein x:Key Attribut. Ich habe gerade versucht und es ließ mich eins mit x:Key hinzufügen, nicht dass ich einen Grund kenne, das zu tun. Es hat die Ressourcen nicht in die äußere verschmolzen.

Try this:

<Application.Resources> 
    <ResourceDictionary> 
     <!-- One of My Resources --> 
     <local:MySettingsClass x:Key="GlobalSettings" /> 

     <!-- My Other Resources --> 

     <ResourceDictionary.MergedDictionaries> 
      <!-- Merged dictionaries --> 
     </ResourceDictionary.MergedDictionaries> 
    </ResourceDictionary> 
</Application.Resources> 

Wenn Sie halten die InitializeComponent Störung zu erhalten, teilen Sie bitte Ihren Code für App.xaml.cs

+1

Dank dachte, es war etwas einfach. Ich habe es in das ResourceDictionary verschoben und einen Fehler bekommen. Ursprünglich dachte es sich um den gleichen Fehler, stellt sich heraus, dass es etwas anderes war. – Xaphann

+0

@ Xaphann Super. –