我试图以编程方式创建一个按钮弹出按钮,在我的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);
然后我收到此错误元素已经是另一个元素的子元素。
有谁理解为什么?我已经看过,但他们还没有存在,所以我不明白为什么它会给我这个错误。有谁知道我做错了什么?
答案 0 :(得分:0)
我不确定你在做什么情况/用例,但是对于我来说,实际控制为Resource
(而不是DataTemplate
,{{1}感到奇怪。等等)。
如果您只想拥有2个不同模板中的1个按钮,为什么不在2上切换Style
而不是从代码中加载控件?
继续这个想法,只需在XAML中的Visibility
中添加两个按钮,然后根据您阅读的设置切换Grid
。
框架内有一个BooleanToVisibilityConverter可以帮助您解决此问题。