Как обратиться к ячейкам элемента Grid и их содержимому

553
21 февраля 2017, 15:56

Имею сетку, построенную с помощью Grid 10*10. В ячейках этой сетки лежат элементы Button, созданные и помещенные туда динамически.

Вопрос, как мне обратится к этим ячейкам, чтоб можно было взаимодействовать с помещенными в них элементами (к примеру поменять им цвет, или свойство content). Не могу понять как это в WPF делается..

Метод создающий кнопку.

private void CreateItemField(int i, int j, Brush color)
        {
            Button button = new Button();
            button.Margin = new Thickness(0.5d);         
            button.Background = color;
            button.Name = "btn" + i + j; 
            MainGrid.Children.Add(button);     
            Grid.SetColumn(button, i);   
            Grid.SetRow(button, j);             
        }
Answer 1

Простым путём — никак.

Если вы почему-то решили создавать контент в code-behind (почему не через ItemsControl, с MVVM?), проще всего при создании запомнить отображение номера клетки в кнопку.

Если вы этого не делаете, Grid сам по себе не имеет понятия о ячейках. Вы можете опросить у него Children, получить список всех дочерних элементов, и искать среди них в цикле (или через LINQ) нужные, пользуясь функциями Grid.GetRow и Grid.GetColumn для получения нужных индексов.

READ ALSO
Использование FluentValidation в патерне “Repository”?

Использование FluentValidation в патерне “Repository”?

Как использовать FluentValidation в патерне репозиторий, когда необходимо проверить уникальность, например, логина (проверяется в БД)?

307
Сравнение циклов

Сравнение циклов

Добрый день!

341
возможно ли преобразовать Array в int[,] C#

возможно ли преобразовать Array в int[,] C#

Задача возникла следующая: создать метод, расширяющий массив произвольной размерности

288