将元素添加到XAML Canvas C#

时间:2014-01-10 04:41:08

标签: c# xaml canvas

我在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);

    }

我现在需要做的是,在我刚创建的画布中添加更多元素,在任何给定时间使用按钮,但我不知道如何引用这个新创建的画布。

3 个答案:

答案 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