如何通过行和列索引以编程方式访问WPF网格中的Control?

时间:2009-10-02 20:49:17

标签: wpf grid row

一旦将控件添加到WPF网格,有没有办法按行和/或列索引以编程方式访问它们?有点像:

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

...其中GetChild是我希望的方法!

5 个答案:

答案 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;