未检测到已安装的组件。元素已经是另一个元素的子元素

时间:2016-07-04 12:30:26

标签: c# windows xaml windows-runtime windows-8.1

在App.xaml中,我添加了一个带有按钮的应用程序资源:

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

MainPage.xaml.cs中,我尝试以编程方式在我的网格中添加此按钮。

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

但它给出了这样的错误:

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

在MainPage.xaml中:

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

</Grid>

我不知道自己做错了什么。

感谢。

2 个答案:

答案 0 :(得分:0)

您无法添加已经是另一个元素的子元素。这就像你的孩子不能成为另一个男人的孩子。

答案 1 :(得分:0)

如果您正在使用在应用程序资源中定义的多个控件实例,则通常会抛出此异常。如果是这种情况,你应该这样做:

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

编辑:似乎WInRT不支持x:shared属性。

使用ControlTemplates有一种解决方法:http://www.gdomc.com/0428/binding-the-content-property-of-a-contentcontrol-in-winrt/