Подтвердить что ты не робот

Как программно получить доступ к элементу управления в сетке WPF по индексу строки и столбца?

Как только элементы управления были добавлены в WPF Grid, есть ли способ программно получить к ним доступ по индексу строки и/или столбца? Что-то вроде:

 var myControl = (object)MyGrid.GetChild(int row, int column);

... где GetChild - метод, который я хотел бы иметь!

4b9b3361

Ответ 1

Для этого нет встроенного метода, но вы можете легко сделать это, посмотрев в коллекции Children:

myGrid.Children
      .Cast<UIElement>()
      .First(e => Grid.GetRow(e) == row && Grid.GetColumn(e) == column);

Ответ 2

Этот ответ поможет вам

int rowIndex = Grid.GetRow(myButton);

RowDefinition rowDef = myGrid.RowDefinitions[rowIndex];

Ответ 3

Свойство "Дети" объекта сетки даст вам набор всех дочерних элементов сетки (из класса Panel).

Что касается получения координат в сетке, посмотрите на статические методы класса Grid (GetRow() и GetColumn()).

Надеюсь, что вы уйдете в правильном направлении.

Ответ 4

Система:: Windows:: Элементы управления:: Grid ^ myGrid = nullptr;   System:: Windows:: Controls:: UserControl ^ pUserControl = nullptr;

myGrid = m_DlgOwnedObjAdmin->GrdProperties;
if (myGrid->Children->Count > 0)
{
    pUserControl = (System::Windows::Controls::UserControl^)myGrid->Children->default[0];
    if (pUserControl != nullptr)
    {
        if (bValue == true)
            pUserControl->Visibility = System::Windows::Visibility::Visible;
        else
            pUserControl->Visibility = System::Windows::Visibility::Collapsed;
    }
}