使用网格的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( ?? );

但我不知道该怎么继续。

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

使用网格的Windows Phone

没有内置的函数,因此您应该手动进行搜索。但是你可以很容易地编写这样的搜索函数,例如使用Linq:

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

没有此函数。您必须读取网格子级的附加属性RowColumn,以确定它们在哪个单元格中。

我不确定你想在那里完成什么,但我可能会建议一种不同的、更干净的方法,这种方法可能对你有用。

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