“Key”属性只能用于“IDictionary”中包含的元素

时间:2013-02-16 06:07:11

标签: wpf xaml

我在下面的第6行代码下面得到了波浪线,给出了标题中说明的错误。我刚刚迁移到VS 2012,一切都在VS 2010中运行良好。我觉得问题可能就在其他地方......有人可以告诉我这个xaml究竟有什么问题吗?

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

1 个答案:

答案 0 :(得分: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文件中定义了资源并且想要在此处导入资源,则仅使用合并字典。