一旦将控件添加到WPF网格,有没有办法按行和/或列索引以编程方式访问它们?有点像:
var myControl = (object)MyGrid.GetChild(int row, int column);
...其中GetChild
是我希望的方法!
答案 0 :(得分:65)
没有内置的方法,但您可以通过查看Children集合轻松完成:
myGrid.Children
.Cast<UIElement>()
.First(e => Grid.GetRow(e) == row && Grid.GetColumn(e) == column);
答案 1 :(得分:8)
This answer会帮助您
int rowIndex = Grid.GetRow(myButton);
RowDefinition rowDef = myGrid.RowDefinitions[rowIndex];
答案 2 :(得分:1)
网格对象的Children属性将为您提供Grid的所有子项的集合(来自Panel类)。
至于获取网格中的坐标,请查看Grid类中的静态方法(GetRow()&amp; GetColumn())。
希望能让你朝着正确的方向前进。
答案 3 :(得分:0)
System :: Windows :: Controls :: 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;
}
}
答案 4 :(得分:0)
您可以给网格列/行命名
<Grid x:Name="MainGridBackground" Grid.Column="0"/>
并通过调用并使用“。”以编程方式对其进行访问。
MainGridBackground.Background = canvasUCInstance.rectanglePreview.Fill;