簡體   English   中英

Silverlight App.xaml中的“元素已經是另一個元素的子元素”錯誤

[英]'Element is already the child of another element' error in Silverlight App.xaml

我的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包含許多樣式和模板。 在我看來沒什么好激動的。

有誰知道什么是錯的?

親切的問候,

羅納德威爾登伯格

由於AnthonyWJones在評論中提供的提示,我自己找到了問題的原因。

看來Silverlight資源字典中的所有內容都必須是可共享的。 原因是資源字典中的項目(可能)將添加到控件層次結構中的多個位置。

我的資源字典中有兩個不可共享的項目。

編輯在WPF中 ,您可以在資源字典中的對象上使用x:Shared屬性來強制WPF為每個資源檢索創建新實例。 不幸的是,Silverlight 不支持此屬性。

可能不是這個問題的答案,但你可以得到這個“元素已經是另一個元素的孩子”的另一個常見原因。 錯誤是,如果您嘗試加載資源,如圖像,並且您的文件名錯誤。

IE特別抱怨會抱怨這個。

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

但是,由於這與資源有關,可能會有這樣一個場景,這將是這個問題的答案:-)

我遇到了同樣的問題,當我檢查我的Styles.xaml文件時,它有一些同名的元素,我更改了元素的名稱並使它們成為唯一的,問題解決了:)

如果您嘗試將帶有Key的Storyboard放在ResourceDictionary中,而不是將其放在ControlTemplate中,那么這似乎也是有效的。

這是因為Storyboard是有狀態對象,無法重復使用(如果它們已啟動,暫停等,它們會跟蹤)

@Simon_Weaver在答案中的建議

提示:如果您不確定哪些項目導致此錯誤,只需創建App.xaml引用的第二個Resources2.xaml並將一些文件移到它上面。 確保你完全重新編譯。 這應該允許您確定哪些資源是不可共享的並導致問題

讓我找到這個項目,我實際上刪除了第一個; 它是一個未使用的路徑對象:

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

作為罪魁禍首。 資源字典#Objects進行資源字典使用 ,它不會將Path列為可共享項。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM