web-dev-qa-db-ja.com

行と列のインデックスでWPFグリッドのコントロールにプログラムでアクセスする方法は?

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

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

... GetChildは、私が望んでいた方法です!

37
Mathias

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

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

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

int rowIndex = Grid.GetRow(myButton);

RowDefinition rowDef = myGrid.RowDefinitions[rowIndex];
9
Carlo

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

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

それが正しい方向にあなたを引き立てることを願っています。

1
Eric Olsson

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;
    }
}
0
Sabi

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

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

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

MainGridBackground.Background = canvasUCInstance.rectanglePreview.Fill;
0
CLU7CH3R