使用网格的Windows Phone
本文关键字:Windows Phone 网格 | 更新日期: 2023-09-27 18:27:00
我有一个7行7列的网格。我想在每个单元格中动态地放置一个控件。
要添加控件,我使用此代码
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( ?? );
但我不知道该怎么继续。
我真的希望有人能帮助我。
没有内置的函数,因此您应该手动进行搜索。但是你可以很容易地编写这样的搜索函数,例如使用Linq:
var rectangleAtXy = grid.Children.OfType<Rectangle>()
.SingleOrDefault(c => Grid.GetColumn(c) == x && Grid.GetRow(c) == y);
没有此函数。您必须读取网格子级的附加属性Row
和Column
,以确定它们在哪个单元格中。
我不确定你想在那里完成什么,但我可能会建议一种不同的、更干净的方法,这种方法可能对你有用。
它涉及使用带有UniformGrid的ListBox作为ItemsPanelTemplate。然后,您将创建一个集合,并将其设置为此列表的ItemsSource。现在,您可以使用控件填充列表,只需简单地从二维透视图(列、行)转换为一维列表(您的列表)。设置和检索控件现在就和转换一样简单。