Como adicionar controle de conteúdo a uma forma adicionados a uma tela toda runtime
Pergunta
Eu tenho uma tela estática. Eu adicionei um tempo de execução de forma. Então eu tento adicionar um ContentControl que irá manter a forma. Mas como a forma já é adicionado à tela, ele dá um erro de criança lógico. Alguém pode me ajudar como conseguir este feito mantendo a lógica de adicionar o ContentControl depois dinamicamente?
XAML: Dentro tag janela manter uma tela em branco com name = "CNV"
C #:
Ellipse ee = new Ellipse();
ee.Width = 100;
ee.Height= 50;
ee.Fill= Brushes.Red;
ee.Name = "el";
hidden.Children.Add(ee);
ContentControl cc = new ContentControl();
cc.BorderBrush = Brushes.Black;
cc.Content = ee;
cnv.Children.Add(ee);
Solução
A UIElement
pode ter apenas um pai, então você precisa para removê-lo do Canvas
antes de re-estar em outro lugar:
hidden.Children.Remove(ee);
cc.Content = ee;
cnv.Children.Add(ee);
PS. Há quase certamente uma maneira mais agradável, mais limpo para fazer o que é que você está tentando fazer, em vez de brincar na árvore visual como você é.
Outras dicas
Como pontos Kent fora um elemento pode ter apenas um pai, então simplesmente remover a linha:
hidden.Children.Add(ee);
do seu código como você também estão chamando:
cnv.Children.Add(ee);