2010-11-28 20 views

答えて

5
var target = myGrid.Children 
      .Cast<UIElement>() // make it into IEnumerable<UIElement> 
      .OfType<Rectangle>() // and select only Rectangles 
      .Where(c => Grid.GetRow(c) == 3); 

は、これはあなたのグリッドの子を列挙し、そして唯一のタイプRectangleのあるものを選択し、その後、target.Single()またはtarget.First()またはその他のクエリの評価関数を使用することができますGrid.Row == 3を持っていますRectangleにアクセスしてください。

アップデート:以下イアンさんのコメントに対処するために更新

。非常にうまくいって、私は完全に同意しています(元のサンプルコードにあまり気を配らなかった)。

+1

Panel.Childrenは古い非ジェネリックコレクションインターフェイスのみを実装しているため、サンプルはそのままコンパイルされません。これを修正するには、 ".Cast ()"を "Children"と ".Where"の間に置いてください。また、タイプによってフィルタリングする演算子を使用してラムダを単純化することもできます。myGrid.Children.Cast ().OfType ().Where(c => Grid.GetRow(c)== 3); - "OfType ()"がインテントをより明確に述べているように思えます。 –

関連する問題