2013-02-16 52 views
6

我在下面的第6行代码中得到了扭曲的行,并给出了标题中指出的错误。我刚刚迁移到VS 2012,并且在VS 2010中一切工作正常。我觉得也许问题真的在其他地方......有人可以告诉我,这个xaml实际上有什么问题吗?“Key”属性只能用于包含在“IDictionary”中的元素

<Application x:Class="SageWpf.App" 
      xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
      xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
      xmlns:local="clr-namespace:SageWpf"> 
    <Application.Resources> 
     <ResourceDictionary x:Key="rd"> 
      <ResourceDictionary.MergedDictionaries> 
       <ResourceDictionary> 
        <local:AppBootStrapper x:Key="bootstrapper"/> 
        <local:EffectConverter x:Key="effectConverter"/> 
        <local:VisibilityConverter x:Key="visibilityConverter"/> 
       </ResourceDictionary> 
      </ResourceDictionary.MergedDictionaries> 
     </ResourceDictionary> 


    </Application.Resources> 
</Application> 

回答

10

<ResourceDictionary x:Key="rd">无效。从那里删除x:Key

另外..这是一种糟糕的方式来构建您的资源。将其更改为:

<Application.Resources> 
    <ResourceDictionary> 
     <local:AppBootStrapper x:Key="bootstrapper"/> 
     <local:EffectConverter x:Key="effectConverter"/> 
     <local:VisibilityConverter x:Key="visibilityConverter"/> 
    </ResourceDictionary> 
</Application.Resources> 

只使用合并后的字典,如果你有其他XAML文件中定义的资源,你想在这里导入它们。

+0

好吧,我想知道为什么它需要这样做,但自Caliburn.Micro示例与合并的字典一起使用它之后就离开了它。老实说,我不完全记得为什么我现在添加了x:Key =“rd”,但我可以发誓它是为了解决我得到的一些其他错误......并且我确信它一直在工作在2010年,但也许我只是吃疯狂的药。现在的问题是我的解决方案仍然出现同样的错误,但是这条扭曲的线条位于bootsrapper线上。 – 2013-02-16 06:17:15

+0

纠正它。看我的编辑。 – 2013-02-16 06:20:25

+0

我被部分误认为...... bootstrapper行下的错误是完全不同的,我弄明白了;但是我仍然收到相同的原始错误信息。波浪线恰好在打开的Appliction标签的'<'字符下。 – 2013-02-16 06:24:29

相关问题