コントロールがWPFグリッドに追加されたら、行または列のインデックス、あるいはその両方によってプログラムでコントロールにアクセスする方法はありますか?以下の線に沿ったもの:
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];
グリッドオブジェクトのChildrenプロパティは、Gridのすべての子のコレクションを提供します(Panelクラスから)。
グリッドの座標を取得する限り、Gridクラスの静的メソッド(GetRow()およびGetColumn())を確認してください。
それが正しい方向にあなたを引き立てることを願っています。
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;
}
}
グリッド列/行に名前を付けることができます
<Grid x:Name="MainGridBackground" Grid.Column="0"/>
それを呼び出して「。」を使用して、プログラムでアクセスします。
MainGridBackground.Background = canvasUCInstance.rectanglePreview.Fill;