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

时间:2010-03-30 17:29:37

标签: silverlight parent-child

我在Silverlight应用程序中遇到了以下错误。但我无法弄清楚它是什么控制问题。如果我调试它不会破坏代码中的任何东西,它只是在这个框架callstack只有框架代码失败。有没有办法获得有关Silverlight应用程序哪个部分的更多信息,在这种情况下是问题。

Message: Sys.InvalidOperationException: ManagedRuntimeError error #4004 in control    'Xaml1': System.InvalidOperationException: Element is already the child of another element.
at MS.Internal.XcpImports.CheckHResult(UInt32 hr)
at MS.Internal.XcpImports.Collection_AddValue[T](PresentationFrameworkCollection`1 collection, CValue value)
at MS.Internal.XcpImports.Collection_AddDependencyObject[T](PresentationFrameworkCollection`1 collection, DependencyObject value)
at System.Windows.PresentationFrameworkCollection`1.AddDependencyObject(DependencyObject value)
at System.Windows.Controls.UIElementCollection.AddInternal(UIElement value)
at System.Windows.PresentationFrameworkCollection`1.Add(T value)
at System.Windows.Controls.AutoCompleteBox.OnApplyTemplate()
at System.Windows.FrameworkElement.OnApplyTemplate(IntPtr nativeTarget)

上下文中AutoCompeletBox的XAML是:

<tk:AutoCompleteBox 
    x:Name="acName" 
    Grid.Row="0" 
    Grid.Column="1" 
    LostFocus="acName_LostFocus"
    Height="20"
    Width="80" 
    HorizontalAlignment="Left"/>

4 个答案:

答案 0 :(得分:1)

错误是一个通用的catch-all异常,它有很多原因。我编写了一个调试器实用程序,可以帮助识别XAML的哪个部分实际上导致了错误。您可以从我的博客下载:http://whydoidoit.com/2010/08/30/debug-xaml-element-is-already-the-child-of-another-element/

答案 1 :(得分:0)

您的项目可能是视觉元素,而不是数据对象。

如果您提供XAML,我可以帮助确保是这种情况。

答案 2 :(得分:0)

通常当所述元素已经附加到现有的父元素并且代码中的某个地方你正试图重新使用它时(例如,当你依次通过直接“添加”必须将孩子从父母先,然后将其添加到孩子等)。

如果具体控制失败,则上述信息不足以消化。

答案 3 :(得分:-4)

简单而愚蠢的解决方案:

public class AutoCompleteTextBox : AutoCompleteBox
    {
        public override void OnApplyTemplate()
        {
            try
            {
                base.OnApplyTemplate();
            }
            catch { }
        }
    }