6

WPFアプリで、UserControlをContentControlから別のコードに移動したいと思います。

 myContentControl2.Content = myUserControl;

この場合、エラーが発生します。
指定された要素は、すでに別の要素の論理的な子です。最初に切断します。

ControlControlクラスの説明で、RemoveVisualChildメソッドを確認できますが、コードで使用しようとすると、不明なメソッドエラーが発生します。

myContentControl1.RemoveVisualChild(myUserControl);//here I get an "Unknown method" error

私はどこが間違っていますか?
UserControlをContentControlから別のCode-behindに移動するにはどうすればよいですか?

4

2 に答える 2

2

セットする

myContentControl1.Content = null;

設定する前にmyContentControl1からmyUserControlを削除します

myContentControl2.Content = myUserControl;

ちなみに、論理ツリーと視覚ツリーを混同しないでください。詳細については、MSDNのWPFのツリーを参照してください。

于 2012-01-30T10:33:13.807 に答える
1

ControlControlクラスの説明で、RemoveVisualChildメソッドを確認できますが、コードで使用しようとすると、不明なメソッドエラーが発生します。

これはRemoveVisualChild、RemoveLogicalChildが保護されたメソッドであり、クラスで直接アクセスできないためです。このメソッドを使用する場合は、から派生クラスを作成しContentControl、そのクラスのパブリックメソッドラッパーを使用してこれらのメソッドを公開します。

より良いオプションは、他のコントロールの論理ツリーを追加する前にmyUserControl、の論理ツリーから削除することです。myContentControl1これを実現するために、のContentプロパティを他のmyContentControl1何かまたはに設定できますnull

于 2012-01-30T10:30:27.113 に答える