每个Dictionary条目必须具有关联的键属性

时间:2013-11-24 21:48:33

标签: c# xaml mvvm dictionary

我使用C#和GalaSoft的MVVM-Light Toolkit编写Windows 8.1 App。

我所拥有的只是以下代码:

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

错误&#34;每个词典条目必须具有关联的键属性&#34;发生,只有当我删除

时才会消失
    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary Source="Resource Dictionaries/StandardStyles.xaml"/>
        </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary> 

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

谁能告诉我这里的问题是什么?

1 个答案:

答案 0 :(得分:45)

请注意,Application.Resources需要ResourceDictionary的实例,因此您必须执行以下操作:

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

所以它一点都不奇怪,它也不是一个bug。如果您希望将ResourceDictionary视为资源,那么您当然必须为其提供一些Key,但在这种情况下,您确实希望将ResourceDictionary的实例分配给Application.Resources