2014-04-16 64 views
0

我已動態創建的WPF網格(行和列計數基於佈局)所示:通過WPF電網循環

private Grid CreateGrid(string layout) 
    { 
     int col; 
     int row; 
     if (layout == "4x4") 
     { 
      row = 4; 
      col = 4; 
     } 
     else 
     { 
      row = 2; 
      col = 2; 
     } 

     Grid output = new Grid(); 

     for (int i = 0; i < col; i++) 
     { 
      ColumnDefinition coldef = new ColumnDefinition(); 
      coldef.Width = GridLength.Auto; 
      output.ColumnDefinitions.Add(coldef); 
     } 

     for (int i = 0; i < row; i++) 
     { 
      RowDefinition rowdef = new RowDefinition(); 
      rowdef.Height = GridLength.Auto; 
      output.RowDefinitions.Add(rowdef); 
     } 

     return output; 
    } 

在每個這些「單元」的應該是另一個對象,填充來自數據集的數據(每個對象一個表)。該對象也是另一組網格。我的目標是循環這個動態創建的網格,並將這個對象放入每個單元格中。 (如果數據集中有佈局2×2但只有3個表格,那麼我只需要3個對象,最後一個單元格就是空的)

但是,我沒有發現像「網格中的foreach列」,甚至沒有找到獲得列/行數。另一方面,我發現的所有內容都與DataGrid或GridView相關 - 有什麼區別,如果其他類型更適合使用,爲什麼?

在此先感謝

+0

您可以通過執行'output.RowDefinitions.Count'或'output.ColumnDefinitions.Count'數行,你有列數 –

+0

因爲UI不是數據,所以您不需要在WPF中「循環通過網格」。改用ItemsControl。發佈你需要的截圖,我可以告訴你在WPF中完成它的正確方法。 –

+0

感謝@JordyvanEijk,行數和列數幫助我制定了一個工作解決方案:)我覺得有點像這樣做幾乎是作弊,但它很簡單,只要它有效,我不會抱怨:D – Asheara

回答

0

因此,我能夠找到解決方案。它可能不是最好的,但它有效。

下面是代碼:

foreach (DataTable table in result.Tables) 
    { 
     GfoTopBox box1 = StuffData(table); 
     Grid.SetRow(box1, j); 
     Grid.SetColumn(box1, i); 
     output.Children.Add(box1); 

     i++; 
     if (i >= output.ColumnDefinitions.Count) 
     { 
      i = 0; 
      j++; 
     } 
    } 

「的結果」是數據集,每個表提供的數據我希望把在網格的細胞中的問題中的一個對象(輸出) 。

但是,如果任何人有更好的解決辦法,我願意接受建議:)