Ответ 1
Для этого нет встроенного метода, но вы можете легко сделать это, посмотрев в коллекции Children:
myGrid.Children
.Cast<UIElement>()
.First(e => Grid.GetRow(e) == row && Grid.GetColumn(e) == column);
Как только элементы управления были добавлены в WPF Grid, есть ли способ программно получить к ним доступ по индексу строки и/или столбца? Что-то вроде:
var myControl = (object)MyGrid.GetChild(int row, int column);
... где GetChild
- метод, который я хотел бы иметь!
Для этого нет встроенного метода, но вы можете легко сделать это, посмотрев в коллекции Children:
myGrid.Children
.Cast<UIElement>()
.First(e => Grid.GetRow(e) == row && Grid.GetColumn(e) == column);
Этот ответ поможет вам
int rowIndex = Grid.GetRow(myButton);
RowDefinition rowDef = myGrid.RowDefinitions[rowIndex];
Свойство "Дети" объекта сетки даст вам набор всех дочерних элементов сетки (из класса Panel).
Что касается получения координат в сетке, посмотрите на статические методы класса Grid (GetRow() и GetColumn()).
Надеюсь, что вы уйдете в правильном направлении.
Система:: 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;
}
}