Элемент уже является потомком другого элемента - PullRequest
3 голосов
/ 30 марта 2010

Я получаю следующую ошибку в своем приложении Silverlight. Но я не могу понять, какой контроль это проблема. Если я отлаживаю, он ничего не нарушает в коде, он просто терпит неудачу в этом фреймворке фреймворка только с кодом фреймворка Есть ли способ получить больше информации о том, какая часть приложения 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)

XAML для AutoCompeletBox, который находится в контексте:

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

Ответы [ 4 ]

1 голос
/ 31 августа 2010

Ошибка - это универсальное универсальное исключение, которое имеет много причин.Я написал утилиту отладчика, которая может помочь определить, какая часть XAML действительно вызывает ошибку.Вы можете скачать его с моего блога: http://whydoidoit.com/2010/08/30/debug-xaml-element-is-already-the-child-of-another-element/

0 голосов
/ 25 октября 2010

Простое и глупое решение:

public class AutoCompleteTextBox : AutoCompleteBox
    {
        public override void OnApplyTemplate()
        {
            try
            {
                base.OnApplyTemplate();
            }
            catch { }
        }
    }
0 голосов
/ 02 апреля 2010

Обычно эта ошибка возникает, когда указанный элемент уже присоединен к существующему родительскому элементу, и где-то в вашем коде вы пытаетесь переопределить его (т. Е. С помощью простого «добавления», когда вы, в свою очередь, должны удалить дочерний элемент из сначала родитель, затем добавьте его к детям и т. д.).

Там, где конкретно происходит сбой элемента управления, вышеприведенного недостаточно для переваривания информации.

0 голосов
/ 31 марта 2010

Ваши элементы могут быть визуальными элементами, а не объектами данных.

Если вы предоставите XAML, я могу помочь убедиться, что это так.

...