43

コントロールがWPFグリッドに追加されたら、行や列のインデックスによってプログラムでコントロールにアクセスする方法はありますか?次のようなもの:

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

...GetChild私が望んでいた方法はどこにありますか?

4

5 に答える 5

73

このための組み込みのメソッドはありませんが、Childrenコレクションを調べることで簡単に実行できます。

myGrid.Children
      .Cast<UIElement>()
      .First(e => Grid.GetRow(e) == row && Grid.GetColumn(e) == column);
于 2009-10-02T21:12:19.313 に答える
11

この答えはあなたを助けます

int rowIndex = Grid.GetRow(myButton);

RowDefinition rowDef = myGrid.RowDefinitions[rowIndex];
于 2009-10-02T21:10:42.257 に答える
1

gridオブジェクトのChildrenプロパティは、(Panelクラスからの)Gridのすべての子のコレクションを提供します。

グリッド内の座標を取得する限り、Gridクラスの静的メソッド(GetRow()およびGetColumn())を確認してください。

それがあなたを正しい方向に向かわせることを願っています。

于 2009-10-02T21:17:38.790 に答える
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;
    }
}
于 2014-11-13T04:56:16.370 に答える
0

グリッドの列/行に名前を付けることができます

<Grid x:Name="MainGridBackground" Grid.Column="0"/>

それを呼び出して「。」を使用することにより、プログラムでアクセスします。

MainGridBackground.Background = canvasUCInstance.rectanglePreview.Fill;
于 2018-08-08T21:33:09.160 に答える