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

92vpleto  于 10个月前  发布在  其他
关注(0)|答案(3)|浏览(127)

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


我不知道我哪里做错了。
谢谢.

jljoyd4f

jljoyd4f1#

如果您使用在应用程序资源中定义的控件的多个示例,则通常会引发此异常。如果是这种情况,您应该执行以下操作:

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

lvmkulzt

lvmkulzt2#

你不能添加已经是另一个元素的子元素,就像你的子元素不能是另一个人的子元素一样。

bpsygsoo

bpsygsoo3#

我是新来的,但我做了类似的事情,我得到了同样的错误。这对我不起作用:

btn = new Button { Text = $"{i}", HeightRequest = 50, WidthRequest = 50 };
flexLayout1.Children.Add(btn)
flexLayout2.Children.Add(btn)

字符串
但这个方法奏效了:

flexLayout1.Children.Add(new Button { Text = $"{i}", HeightRequest = 50, WidthRequest = 50 });
flexLayout2.Children.Add(new Button { Text = $"{i}", HeightRequest = 50, WidthRequest = 50 });

相关问题