我在xml中创建了一个使用代码隐藏的Windows 8应用程序。 我有一个按钮,当按下它时,将创建一个画布,并在其中放置一个网格。
private void AddClass_Click_1(object sender, RoutedEventArgs e)
{
SolidColorBrush greenBrush = new SolidColorBrush(Windows.UI.Colors.Green);
Thickness size = new Thickness();
size.Top = 20;
size.Right = 20;
size.Left = 20;
size.Bottom = 20;
Canvas newcanvas = new Canvas();
newcanvas.Background = greenBrush;
newcanvas.Width=500;
newcanvas.Height=500;
newcanvas.Margin=size;
newcanvas.Name = "Class3";
GridView temp = new GridView();
newcanvas.Children.Add(temp);
classes.Items.Add(newcanvas);
}
我现在需要做的是,在我刚创建的画布中添加更多元素,在任何给定时间使用按钮,但我不知道如何引用这个新创建的画布。
答案 0 :(得分:1)
在课程级别保存参考:
Canvas myCanvas;
然后第一次创建它:
private void AddClass_Click_1(object sender, RoutedEventArgs e)
{
if(myCanvas == null)
{
myCanvas = new Canvas();
newcanvas.Background = greenBrush;
newcanvas.Width=500;
newcanvas.Height=500;
newcanvas.Margin=size;
newcanvas.Name = "Class3";
}
GridView temp = new GridView();
newcanvas.Children.Add(temp);
classes.Items.Add(newcanvas);
}
但为什么不在XAML中定义你Canvas
?然后,如果你给它一个名字,你可以在代码隐藏中引用:
<Canvas Name="myCanvas" Width="500" ...>
</Canvas>
private void AddClass_Click_1(object sender, RoutedEventArgs e)
{
myCanvas.Children.Add(new GridView());
}
答案 1 :(得分:0)
只需移动您的Canvas声明
Canvas newcanvas = new Canvas();
在函数之外,但在你计划从中解决它的范围。
稍后当您想要从按钮后面的代码再次引用它时,它仍然存在。
答案 2 :(得分:0)
由于您以这种方式添加了新创建的画布:
classes.Items.Add(newcanvas);
然后我想,稍后尝试访问它的第一件事是来自Items
的{{1}}属性:
classes
如果classes.Items
中有多个对象,只需遍历Items
并检查项目类型是否为Items
。