2009-10-02 7 views

答えて

57

助けるあり、このための組み込みの方法はありませんが、子供のコレクションに見ることで、それを簡単に行うことができます

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

しかし、技術的には、単一のグリッド "セル"に複数の要素を持つことができます。なぜなら、hte添付プロパティはそれをチェックしないからです。 –

+0

ありがとうございます。これは私がこれまで続けてきたアプローチです。子どものすべての子を繰り返して、マッチン行と列を持つコントロールを見つけるまでは、もっと直接的なものがあると思っていました。 – Mathias

+2

ありがとう、Reed、良い点 - これはFirstの代わりにWhereを使って簡単に達成できます。 – itowlson

8

This answerはあなた

int rowIndex = Grid.GetRow(myButton); 

RowDefinition rowDef = myGrid.RowDefinitions[rowIndex]; 
+0

ありがとうございますが、私はmyButtonへの参照がないので、仕事をしません! – Mathias

+0

ああ、私は理解しています。 – Carlo

+0

これはまさに私が探していたものです。私はオブジェクトへの参照を持っていた、私はちょうどそれが行と色を把握する必要がありました。ありがとう、カルロ。 – esteuart

0

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

グリッド内の座標を取得する限り、グリッドクラス(GetRow()& GetColumn())の静的メソッドを見てください。

あなたが正しい方向に向かうことを望む希望。

0

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; 
    } 
} 
関連する問題