2016-07-04 2 views
2

Dans App.xaml J'ai ajouté des ressources d'application avec un bouton comme:Aucun composant installé n'a été détecté. L'élément est déjà l'enfant d'un autre élément

<Application.Resources> 
    <Button x:Key="MyButton"/> 
</Application.Resources> 

En MainPage.xaml.cs, j'ai essayé d'ajouter ce bouton dans ma grille programatically.

Button btn = (Button)Application.Current.Resources["MyButton"]; 
myGrid.Children.Add(btn); 

Mais il donne l'erreur comme ceci:

No installed components were detected. Element is already the child of another element.

En MainPage.xaml:

<Grid x:Name="myGrid" Background="{ThemeResource ApplicationPageBackgroundThemeBrush}"> 

</Grid> 

Je ne sais pas ce que je fais mal.

Merci.

Répondre

0

Vous ne pouvez pas ajouter l'élément qui est déjà enfant d'un autre élément. C'est comme si votre enfant ne pouvait pas être l'enfant d'un autre gars.

+0

Ce n'est pas nécessairement vrai. Voir https://www.newscientist.com/article/2107219-exclusive-worlds-first-baby-born-with-new-3-parent-technique/ – Paymon

0

Cette exception est généralement levée si vous utilisez plusieurs instances du contrôle que vous avez définies dans vos ressources d'application. Si c'est le cas, vous devriez faire:

<Button x:Key="MyButton" x:Shared="false"/> 

EDIT: il semble que WInRT ne supporte pas l'attribut x: shared.

Il existe une solution à l'aide ControlTemplates: http://www.gdomc.com/0428/binding-the-content-property-of-a-contentcontrol-in-winrt/

+0

J'ai essayé la même chose mais ça donne une erreur dans app.xaml comme ceci: 'Erreur de syntaxe trouvée dans la génération XBF' –