Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Move a UserControl from a ContentControl to another one programmatically

In a WPF app I want to move a UserControl from a ContentControl to another one in code:

 myContentControl2.Content = myUserControl;

in this case I get an error:
Specified element is already the logical child of another element. Disconnect it first.

In a ControlControl class description I can see a RemoveVisualChild method, but when I try to use it in code I get an Unknown method error

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

Where am I wrong?
How to move a UserControl from a ContentControl to another one in code-behind?

like image 808
rem Avatar asked Jan 30 '12 10:01

rem


2 Answers

Set

myContentControl1.Content = null;

to remove myUserControl from myContentControl1 before setting

myContentControl2.Content = myUserControl;

By the way, don't confuse the logical tree with the visual tree. Get more information in Trees in WPF in the MSDN.

like image 106
Clemens Avatar answered Nov 03 '22 18:11

Clemens


In a ControlControl class description I can see a RemoveVisualChild method, but when I try to use it in code I get an Unknown method error

This is because RemoveVisualChild and RemoveLogicalChild are protected methods which you can not access in your class directly. If you want to use this method then create a derived class from ContentControl and expose these methods using some public method wrapper in that class.

Better option is to remove myUserControl from logical tree of myContentControl1 before adding it some other control's logical tree. To achieve this you can set the Content property of myContentControl1 to something else or to null.

like image 26
Maheep Avatar answered Nov 03 '22 18:11

Maheep