【问题标题】:The "Key" attribute can only be used on an element that is contained in "IDictionary"“Key”属性只能用于“IDictionary”中包含的元素
【发布时间】:2013-05-01 22:09:45
【问题描述】:

我在下面的第 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>

【问题讨论】:

    标签: wpf xaml


    【解决方案1】:

    &lt;ResourceDictionary x:Key="rd"&gt; 无效。从那里删除x:Key

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

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

    仅当您在另一个 XAML 文件中定义了资源并且想要在此处导入它们时才使用合并字典。

    【讨论】:

    • 好吧,我想知道为什么它需要这样,但因为 Caliburn.Micro 示例使用合并字典完成了它,所以我离开了它。老实说,我不完全记得为什么我现在添加了 x:Key="rd",但我可以发誓这是为了修复我遇到的其他一些错误......而且我很确定它一直在工作在 2010 年,但也许我只是在服用疯狂的药丸。现在的问题是我仍然遇到与您的解决方案相同的错误,但波浪线位于 bootsrapper 行上。
    • 我部分错了......引导程序行下的错误完全不同,我得到了修复;但是我仍然收到相同的原始错误消息。波浪线就在开始应用程序标记的“
    • 重建整个解决方案。
    • 叹息...谢谢。我遇到了其他一些奇怪的问题,但至少现在可以了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-10
    相关资源
    最近更新 更多