コントロールがWPFグリッドに追加されたら、行や列インデックスでプログラムにアクセスする方法はありますか?行と列のインデックスでWPFグリッドのコントロールにプログラムでアクセスする方法?
var myControl = (object)MyGrid.GetChild(int row, int column);
... GetChild
の行に沿って何か私は望んでいた方法です!
コントロールがWPFグリッドに追加されたら、行や列インデックスでプログラムにアクセスする方法はありますか?行と列のインデックスでWPFグリッドのコントロールにプログラムでアクセスする方法?
var myControl = (object)MyGrid.GetChild(int row, int column);
... GetChild
の行に沿って何か私は望んでいた方法です!
助けるあり、このための組み込みの方法はありませんが、子供のコレクションに見ることで、それを簡単に行うことができます
myGrid.Children
.Cast<UIElement>()
.First(e => Grid.GetRow(e) == row && Grid.GetColumn(e) == column);
This answerはあなた
int rowIndex = Grid.GetRow(myButton);
RowDefinition rowDef = myGrid.RowDefinitions[rowIndex];
Childrenプロパティグリッドオブジェクトの(Panelクラスからの)グリッドのすべての子のコレクションを提供します。
グリッド内の座標を取得する限り、グリッドクラス(GetRow()& GetColumn())の静的メソッドを見てください。
あなたが正しい方向に向かうことを望む希望。
System :: Windows :: Controls :: Grid^myGrid = nullptr; システム:: 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;
}
}
しかし、技術的には、単一のグリッド "セル"に複数の要素を持つことができます。なぜなら、hte添付プロパティはそれをチェックしないからです。 –
ありがとうございます。これは私がこれまで続けてきたアプローチです。子どものすべての子を繰り返して、マッチン行と列を持つコントロールを見つけるまでは、もっと直接的なものがあると思っていました。 – Mathias
ありがとう、Reed、良い点 - これはFirstの代わりにWhereを使って簡単に達成できます。 – itowlson