コントロールをある親から別の親に移動しようとしています (これが機能するかどうかはよくわかりません)。動かしたいコントロールを掴むことができます。これが私のコードです:
public void MoveElement(UIElement uiElement)
{
var element = ((FrameworkElement)uiElement).Parent;
//TODO:Remove from parent
myControl.Children.Add(uiElement);
}
最後のステートメントにヒットすると、「指定されたビジュアルは既に別のビジュアルの子であるか、CompositionTarget のルートです」という ArgumentException がスローされます。奇妙なことに、Parent は null を返します。親を見つける方法は?これでも機能しますか?
編集:実際に要素を移動することが私の問題に対する答えだとは思いません。私は Visual Studio SDK をUIElement
使用しており、エディター ペインを構成する を手に入れることができました (extends DockPanel
)。コントロールを標準エディターから開発中のカスタム ツール ウィンドウに移動しようとしていました。
これはハックであることが証明されており、同じコントロールの複数のインスタンスが必要であることに気付いたので、より複雑なソリューション (およびハックの少ない) が用意されていると思います。