Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Each Dictionary entry must have an associated key attribute

I am programming w Windows 8.1 App using C# and the MVVM-Light Toolkit from GalaSoft.

All I have is the code below:

<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>

The error "Each Dictionary entry must have an associated key attribute" occurs and only disappears when I either remove

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

or

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

Can anyone tell me what the problem here is?

like image 660
FunkyPeanut Avatar asked Nov 24 '13 21:11

FunkyPeanut


1 Answers

Note that Application.Resources requires an instance of ResourceDictionary, so you have to do something like this:

<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>

So it's not strange at all, it's also not a bug. If you want your ResourceDictionary to be treated as a resource, you of course have to provide some Key for it, however in this case you really want to assign an instance of ResourceDictionary to the Application.Resources

like image 194
King King Avatar answered Nov 16 '22 21:11

King King