2012-01-30 14 views
6

W aplikacji WPF chcę przenieść UserControl z ContentControl do drugiego w postaci kodu:Przenieś UserControl z ContentControl do innego programowo

myContentControl2.Content = myUserControl; 

w tym przypadku pojawia się błąd:
Określony element jest już logicznym dzieckiem innego elementu. Odłącz najpierw.

W ControlControl class description widzę RemoveVisualChild method, ale gdy próbuję użyć go w kodzie pojawia się nieznane metody error

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

Jeżeli się mylę?
Jak przenieść UserControl z ContentControl na inny w kodzie?

+0

Zaktualizowano odpowiedź – Maheep

+0

@Maheep: tak, z odpowiedzią. – Clemens

+0

@Clemens: Tak. To, co zaktualizowałem, jest takie samo jak twoja odpowiedź. Ale wypróbowałem rozwiązanie niezależnie i zaktualizowałem. Jestem w porządku z twoją odpowiedzią jako zaakceptowaną. Ale szczęśliwy, że ja też to uczyłem. – Maheep

Odpowiedz

2

Set

myContentControl1.Content = null; 

usunąć myUserControl z myContentControl1 przed ustawieniem

myContentControl2.Content = myUserControl; 

Nawiasem mówiąc, nie mylić logiczną drzewa z drzewa wizualnej. Uzyskaj więcej informacji pod numerem Trees in WPF w witrynie MSDN.

+0

Tak, dziękuję! Wasza notatka o drzewach też jest pomocna, +1 – rem

1

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

To dlatego RemoveVisualChild i RemoveLogicalChild chronione są metody, które nie mają dostępu w klasie bezpośrednio. Jeśli chcesz skorzystać z tej metody, utwórz klasę pochodną z ContentControl i ujawnij te metody, używając jakiejś publicznej metody pakowania w tej klasie.

Lepszą opcją jest usunięcie myUserControl z drzewa logicznego myContentControl1 przed dodaniem go do logicznego drzewa innej kontrolki. Aby to osiągnąć, możesz ustawić właściwość Content z myContentControl1 na coś innego lub na null.

+1

Dziękujemy za wyjaśnienie korzystania z chronionych metod, +1 – rem

Powiązane problemy