Windows Phone с использованием Grid - PullRequest
3 голосов
/ 06 марта 2012

У меня есть сетка с 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( ?? );

Но я не знаю, как продолжить.

Я действительно надеюсь, что кто-то может мне помочь.

Ответы [ 3 ]

4 голосов
/ 06 марта 2012

Для этого нет встроенной функции, поэтому вам следует выполнить поиск вручную.Но вы можете легко написать такую ​​функцию поиска, например, с помощью Linq:

var rectangleAtXy = grid.Children.OfType<Rectangle>()
    .SingleOrDefault(c => Grid.GetColumn(c) == x && Grid.GetRow(c) == y);
1 голос
/ 07 марта 2012

Я не уверен, чего вы там добиваетесь, но я мог бы предложить другой, более чистый подход, который мог бы работать для вас.

Это включает использование ListBox с UniformGrid в качестве ItemsPanelTemplate. Затем вы должны создать коллекцию и установить ее в качестве источника элементов для этого списка. Теперь вы можете заполнить свой список элементами управления, используя простое преобразование из двумерной перспективы (столбец, строка) в один список измерений (ваш список). Установка и получение элементов управления теперь так же просты, как и это преобразование.

1 голос
/ 06 марта 2012

Для этого нет функции.Вы должны прочитать вложенные свойства Row amd Column дочерних элементов сетки, чтобы определить, в какой ячейке они находятся.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...