代码之家  ›  专栏  ›  技术社区  ›  Ronald Wildenberg

Silverlight app.xaml中的“element already is the child of another element”错误

  •  8
  • Ronald Wildenberg  · 技术社区  · 15 年前

    我心里一直有个奇怪的错误 App.xaml 文件:

    元素已经是另一个元素的子元素。

    我的app.xaml文件如下:

    <Application xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                 xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
                 x:Class="Celerior.Annapurna.SL.App">
        <Application.Resources>
            <ResourceDictionary>
                <ResourceDictionary.MergedDictionaries>
                    <ResourceDictionary Source="ProvisiorResourceDictionary.xaml"/>
                </ResourceDictionary.MergedDictionaries>
            </ResourceDictionary>
        </Application.Resources>
    </Application>
    

    整个系统都会报告错误 ResourceDictionary 元素(从第5行到第9行)。

    ProvisiorResourceDictionary.xaml 包含许多样式和模板。在我看来没有什么令人兴奋的。

    有人知道怎么回事吗?

    亲切的问候,

    罗纳德·维登伯格

    5 回复  |  直到 9 年前
        1
  •  6
  •   Ronald Wildenberg    12 年前

    我自己找到了问题的原因,多亏了安托尼沃琼斯在评论中提供的提示。

    它显示了A中的所有内容 Silverlight resource dictionary 必须是可共享的。原因是资源字典中的项(可能)将添加到控件层次结构中的多个位置。

    我的资源字典中有两个项目不可共享。

    编辑 : 在WPF中 ,您可以使用 x:Shared 属性设置在资源字典内的对象上,以强制WPF为每次资源检索创建新实例。不幸的是,Silverlight does not support 这个属性。

        2
  •  3
  •   Simon_Weaver    14 年前

    可能不是这个问题的答案 但是另一个常见的原因是你可以得到这个“元素已经是另一个元素的子元素。”错误是如果你试图加载一个资源,比如一个图像,而你的文件名是错误的。

    特别是抱怨者会抱怨这件事。

    <Image ToolTipService.ToolTip="Email customer" 
           Source="../images/FILE-THAT-DOESNT-EXIST.png"></Image>
    

    但是,由于这与资源有关,可能会出现这样一种情况,即这是对这个问题的答案:—)

        3
  •  1
  •   Zain Shaikh    14 年前

    我有同样的问题,当我检查styles.xaml文件时,它有一些同名的元素,我更改了元素的名称并使它们唯一,问题解决了:)

        4
  •  0
  •   George Birbilis    11 年前

    如果您试图将带有键的故事板放在ResourceDictionary中,而不是将其放在ControlTemplate中,那么这似乎也是一个错误。

    这是因为故事板是有状态的对象,不能重用(它们跟踪是否启动、暂停等)。

        5
  •  0
  •   ΩmegaMan    9 年前

    答案中的@simon_weaver建议

    提示:如果您不确定是哪些项目导致了此错误,只需 创建app.xaml引用的第二个resources2.xaml并移动 把一些文件交给它。确保完全重新编译。这应该 允许您确定哪些资源不可共享并导致 问题

    引导我找到这个项目,我实际删除的第一个项目;它是一个未使用的路径对象:

    <Path x:Key="RightArrowPath" .. />
    

    作为罪犯。依附于 Resource Dictionaries #Objects for Resource Dictionary Usage ,它没有列出 Path 作为可共享项目。

    推荐文章