2012-03-06 56 views
3

我有一個7行7列的網格。我想動態地在每個單元格中放入一個控件。使用網格的Windows Phone

要添加控件我使用此代碼

Rectangle newRectangle = new Rectangle(); 

newRectangle.Tap += new EventHandler<GestureEventArgs>(Rectangle_KeyDown); 
newRectangle.Fill = HighlightColor; 

Grid.SetColumn(newRectangle, i); 
Grid.SetRow(newRectangle, ii); 

grid1.Children.Add(newRectangle); 

我怎樣才能從x,y位置的控制中的一個?

我覺得像

Grid.GetColumn(??); 
Grid.GetRow(??); 

但我不知道該怎麼繼續。

我真的希望有人能幫助我。

回答

4

沒有內置函數,因此您應該手動執行搜索。但是你可以很容易地寫出這樣的搜索功能e.g使用LINQ:

var rectangleAtXy = grid.Children.OfType<Rectangle>() 
    .SingleOrDefault(c => Grid.GetColumn(c) == x && Grid.GetRow(c) == y); 
1

沒有這個功能。您必須閱讀網格子項的附加屬性和Column以確定它們在哪個單元格中。

1

我不知道你所要完成的有什麼,但我會建議可能會爲你工作不同,更簡潔的方法。

它涉及到使用帶有UniformGrid的ListBox作爲ItemsPanelTemplate。 然後,您將創建一個集合並將其設置爲此列表的ItemsSource。現在,您可以使用從二維透視圖(列,行)到單維列表(列表)的簡單轉換,使用控件填充列表。設置和檢索控件現在與該轉換一樣簡單。