2013-11-24 16 views
22

Sto programmando w di Windows 8.1 App utilizzando C# e il MVVM-Light Toolkit da GalaSoft.Ogni voce del dizionario deve avere un attributo chiave associata

Tutto quello che ho è il codice qui sotto:

<Application.Resources> 
    <vm:ViewModelLocator x:Key="Locator" xmlns:vm="using:Scedule.ViewModel" /> 

    <ResourceDictionary> 
     <ResourceDictionary.MergedDictionaries> 
      <ResourceDictionary Source="Resource Dictionaries/StandardStyles.xaml"/> 
     </ResourceDictionary.MergedDictionaries> 
    </ResourceDictionary>  
</Application.Resources> 

L'errore "Ogni voce del dizionario deve avere un attributo chiave associata" si verifica e scompare solo quando ho rimuovere

<ResourceDictionary> 
     <ResourceDictionary.MergedDictionaries> 
      <ResourceDictionary Source="Resource Dictionaries/StandardStyles.xaml"/> 
     </ResourceDictionary.MergedDictionaries> 
    </ResourceDictionary> 

o

<vm:ViewModelLocator x:Key="Locator" xmlns:vm="using:Scedule.ViewModel" /> 

qualcuno può dirmi qual è il problema qui è?

+0

Forse una vittima: http: // stackoverflow.com/questions/16514137/errors-in-app-xaml-trying-to-use-mvvm-light-in-windows-phone-8-project – Bit

+0

'quando ho rimuovere l'albero visuale fino ao la' - > questa frase non ha senso per me. –

+0

@ M4TKD Ho già controllato quel post e questo non mi aiuta. Si dice di rimuovere il MergedDictionary ma è esattamente quello che sto cercando di implementare qui. – FunkyPeanut

risposta

40

noti che Application.Resources richiede un'istanza di ResourceDictionary, quindi bisogna fare qualcosa di simile:

<Application.Resources>  
    <ResourceDictionary> 
    <vm:ViewModelLocator x:Key="Locator" xmlns:vm="using:Scedule.ViewModel" /> 
    <ResourceDictionary.MergedDictionaries> 
     <ResourceDictionary Source="Resource Dictionaries/StandardStyles.xaml"/> 
    </ResourceDictionary.MergedDictionaries> 
    </ResourceDictionary>  
</Application.Resources> 

Quindi non è affatto strano, non è anche un bug. Se volete che il vostro ResourceDictionary da trattare come una risorsa, è ovviamente necessario fornire alcune Key per esso, tuttavia in questo caso si vuole veramente assegnare un'istanza di ResourceDictionary al Application.Resources

+2

Questo funziona! E grazie per la spiegazione, questa è la parte più importante quando si risponde alle cose. Grazie mille :) – FunkyPeanut

+1

Questo ha continuato a darmi errori ma ha funzionato dopo aver riavviato lo studio visivo. – CathalMF

+0

Sono stupido o cieco ma qual è la differenza qui che ha reso questo lavoro diverso da uno scambio di righe 2 e 3? –

Problemi correlati