1

私のプログラムではtabItems、ビュー モデルにコマンドがバインドされています。tabItem新しいtabItem. _ このプログラムのユーザーは new を追加できるため、これを行う必要がありますtabItems

現在、私はCopying a TabItem with an MVVM structure というGrid質問を使用していますが、関数がを使用してオブジェクトをコピーしようとすると問題が発生するようですdependencyValue

私が使用しているクラス:

public static class copyTabItems
{
    public static IList<DependencyProperty> GetAllProperties(DependencyObject obj)
    {
        return (from PropertyDescriptor pd in TypeDescriptor.GetProperties(obj, new Attribute[] { new PropertyFilterAttribute(PropertyFilterOptions.SetValues) })
                    select DependencyPropertyDescriptor.FromProperty(pd)
                    into dpd
                    where dpd != null
                    select dpd.DependencyProperty).ToList();
    }

    public static void CopyPropertiesFrom(this FrameworkElement controlToSet,
                                                   FrameworkElement controlToCopy)
    {
        foreach (var dependencyValue in GetAllProperties(controlToCopy)
                .Where((item) => !item.ReadOnly)
                .ToDictionary(dependencyProperty => dependencyProperty, controlToCopy.GetValue))
        {
            controlToSet.SetValue(dependencyValue.Key, dependencyValue.Value);
        }
    }
}

プログラムに到達すると、「指定された要素はすでに別の要素の論理的な子です。最初に切断してください」というメッセージがスローdependencyValueされます。{[Content, System.Windows.Controls.Grid]}InvalidOperationException was Unhandled

これは何を意味するのでしょうか?Gridこれは WPFの一般的な問題ですか? 私のプログラムに、これを引き起こしていることに気付いていない何かがありますか?

4

1 に答える 1