Как получить все элементы управления внутри определенного RowDefinition / ColumnDefinition в сетке? - PullRequest
0 голосов
/ 30 октября 2009

Мне нужно получить все элементы управления внутри определенного RowDefinition / ColumnDefinition без перебора всех элементов управления в контейнере.

Любой совет? Спасибо.

Ответы [ 2 ]

1 голос
/ 30 октября 2009

Нет способа сделать это без итерации всех детей. Вот метод расширения, который возвращает только дочерние элементы в определенной позиции сетки:

public static class GridExtensions
{
    public static IEnumerable<DependencyObject> GetChildren(this Grid grid, int row, int column)
    {
        int count = VisualTreeHelper.GetChildrenCount(grid);
        for (int i = 0; i < count; i++)
        {
            DependencyObject child = VisualTreeHelper.GetChild(grid, i);
            int r = Grid.GetRow(child);
            int c = Grid.GetColumn(child);
            if (r == row && c == column)
            {
                yield return child;
            }
        }
    }
}
1 голос
/ 30 октября 2009

Извините, нет никакого способа сделать это, кроме как перебирать дочерние элементы Grid и самостоятельно извлекать значения из прикрепленных свойств.

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