2012-03-06 57 views
3

我有一个7行7列的网格。我想动态地在每个单元格中放入一个控件。使用网格的Windows Phone

要添加控件我使用此代码

Rectangle newRectangle = new Rectangle(); 

newRectangle.Tap += new EventHandler<GestureEventArgs>(Rectangle_KeyDown); 
newRectangle.Fill = HighlightColor; 

Grid.SetColumn(newRectangle, i); 
Grid.SetRow(newRectangle, ii); 

grid1.Children.Add(newRectangle); 

我怎样才能从x,y位置的控制中的一个?

我觉得像

Grid.GetColumn(??); 
Grid.GetRow(??); 

但我不知道该怎么继续。

我真的希望有人能帮助我。

回答

4

没有内置函数,因此您应该手动执行搜索。但是你可以很容易地写出这样的搜索功能e.g使用LINQ:

var rectangleAtXy = grid.Children.OfType<Rectangle>() 
    .SingleOrDefault(c => Grid.GetColumn(c) == x && Grid.GetRow(c) == y); 
1

没有这个功能。您必须阅读网格子项的附加属性和Column以确定它们在哪个单元格中。

1

我不知道你所要完成的有什么,但我会建议可能会为你工作不同,更简洁的方法。

它涉及到使用带有UniformGrid的ListBox作为ItemsPanelTemplate。 然后,您将创建一个集合并将其设置为此列表的ItemsSource。现在,您可以使用从二维透视图(列,行)到单维列表(列表)的简单转换,使用控件填充列表。设置和检索控件现在与该转换一样简单。