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

Posted

技术标签:

【中文标题】未检测到已安装的组件。元素已经是另一个元素的子元素【英文标题】:No installed components were detected. Element is already the child of another element 【发布时间】:2016-11-06 04:36:25 【问题描述】:

在 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>

我不知道我做错了什么。

谢谢。

【问题讨论】:

【参考方案1】:

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

【讨论】:

这不一定是真的。见newscientist.com/article/… @Paymon,亮了。 ;)【参考方案2】:

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

<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/

【讨论】:

我尝试了同样的方法,但它在 app.xaml 中出现如下错误:Syntax Error found in XBF generation

以上是关于未检测到已安装的组件。元素已经是另一个元素的子元素的主要内容,如果未能解决你的问题,请参考以下文章

定义 DataGridTemplateColumn.Header 导致“指定元素已经是另一个元素的逻辑子元素。首先断开它”异常

CSS 可以检测元素的子元素数量吗?

详解选择排序

React遍历组件元素的子元素

如何检测鼠标在jQuery中的子元素上?

ghpython_选择排序