元素已经是另一个不存在的元素的子元素
本文关键字:元素 不存在 另一个 | 更新日期: 2023-09-27 18:16:00
我试图以编程方式创建一个按钮弹出,在我的XAML我有:
<Page.Resources>
<Button x:Key="LaunchFlyout" Content="LAUNCH">
<Button.Flyout>
<Flyout Placement="Top">
<Grid Width="200" Height="200">
<StackPanel>
<Rectangle Fill="Red" Width="100" Height="100" />
<Rectangle Fill="Green" Width="100" Height="100" />
</StackPanel>
</Grid>
</Flyout>
</Button.Flyout>
</Button>
</Page.Resources>
嵌套在grids
我有:
<Grid x:Name="launchBtn_grid" Grid.Column="1">
</Grid>
然后在Page_Loaded
方法的代码中,我有:
bool hasContainer = localSettings.Containers.ContainsKey("appStatus");
if (!hasContainer) {
Button button = (Button)this.Resources["LaunchFlyout"];
launchBtn_grid.Children.Add(button);
}
else {
Button button = new Button();
button.Content = "LAUNCH";
button.Click += launch_btn_Click;
launchBtn_grid.Children.Add(button);
}
当我调试它时,它到达IF语句并到达launchBtn_grid.Children.Add(button);
行,然后我得到这个错误元素已经是另一个元素的子元素。
有人知道为什么吗?我已经看过了,他们不存在,所以我不明白为什么它给我这个错误。有人知道我做错了什么吗?
我不确定你在什么上下文/用例中这样做,但对我来说,有一个实际的控制作为Resource
(不是DataTemplate
, Style
等)感觉很奇怪。
如果你只想有2个不同模板的1个按钮,为什么不切换Visibility
上的2,而不是从你的代码后面加载控件?
继续使用这个想法,只需在XAML中添加Grid
中的两个按钮,并根据您阅读的设置切换它们的Visibility
。
在框架中有一个BooleanToVisibilityConverter来帮助你做到这一点