C# 向XAML画布C添加元素#
我用xml创建了一个Windows8应用程序,并使用代码隐藏。 我有一个按钮,当按下时,将创建一个画布,并在其中放置一个网格C# 向XAML画布C添加元素#,c#,xaml,canvas,C#,Xaml,Canvas,我用xml创建了一个Windows8应用程序,并使用代码隐藏。 我有一个按钮,当按下时,将创建一个画布,并在其中放置一个网格 private void AddClass_Click_1(object sender, RoutedEventArgs e) { SolidColorBrush greenBrush = new SolidColorBrush(Windows.UI.Colors.Green); Thickness size = new
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);
}
我现在需要做的是,在任何给定时间使用按钮向我刚刚创建的画布中添加更多元素,但我不确定如何引用新创建的画布。在类级别保存引用:
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());
}
私有void AddClass_Click_1(对象发送方,路由目标)
{
myCanvas.Children.Add(newgridview());
}
只需移动画布声明即可
Canvas newcanvas = new Canvas();
在功能之外,但在您计划从中解决它的范围内
稍后,当您想从按钮上的代码隐藏中再次引用它时,它仍将存在。因为您以这种方式添加了新创建的画布:
classes.Items.Add(newcanvas);
然后我想,稍后尝试访问它的第一件事是从类的项属性:
classes.Items
如果您在项目中有多个对象,只需迭代项目
,检查项目类型是否为画布
,我应该更清楚,我需要单独向画布添加元素,这似乎是另一个问题,您说:“在我刚刚创建的画布中添加更多元素”。如果您想在每次单击时创建一个新画布,请将其隐藏在列表中—您似乎已经开始这样做了..我没有在xaml中定义它的原因是因为我无法确定需要多少个画布。我可能需要多达数千个。使用字典会比列表更好吗?这取决于你需要做什么,如果你不需要访问它们,你不需要隐藏它们。我应该更清楚,我需要单独向画布添加元素。你是说你要添加多个画布吗?每次用户触摸按钮时,您想要另一个画布?如果有多个画布,您如何知道用户打算将哪个画布作为附加项目的目标?