2017-02-21 107 views
0

我需要你的幫助,用WPF中的標籤填充我的網格。Wpf如何用標籤填充網格?

想象一下格子3x3。

我的代碼是這樣的: MainWindow.xaml.cs

private void CreationDeLaCarte() 
{ 
    Label CaseForet = new Label(); 
    CaseForet.Background = Brushes.Black; 
    Grille.Children.Add(CaseForet); 
} 

private void CreerLesCases() 
{ 
    for (int i = 0; i < 8; i++) 
    { 
     for (int j = 0; j < 10; j++) 
     { 
      CreationDeLaCarte(); 
     } 
    } 
} 

結果:在網格中僅有一個單元被塗黑。而不是我想要的所有網格。我怎樣才能改善這一點?

謝謝你的回覆! :)

+0

如果電網是3×3,爲什麼環有8個和10個上限?要將標籤放入正確的單元格中,您需要爲每個標籤設置「Grid.Row」和「Grid.Column」屬性。如果您對MVVM解決方案感興趣,請查看以下問題:http://stackoverflow.com/questions/37145391/how-to-create-and-use-matrix-of-color-boxes-c-sharp-wpf – ASh

+0

感謝您的鏈接!是的,我看到它,這是一個例子。 :) – Karro

回答

0

你應該在你的循環設置Grid.RowGrid.Column屬性:

private void CreationDeLaCarte(int i, int j) 
{ 
    Label CaseForet = new Label(); 
    CaseForet.Background = Brushes.Black;   
    Grille.Children.Add(CaseForet); 
    Grid.SetRow(CaseForet, i); 
    Grid.SetColumn(CaseForet, j); 
} 

,你的循環應該是這樣的:

for (int i = 0; i < 8; i++) 
    { 
     for(int j = 0; j <10; j++) 
     { 
      CreationDeLaCarte(i,j); 
     } 
    } 

確保最大列數和行是否相符你的網格。

+0

我做了同樣的事情。是的,它的工作。 :) – Karro

0

我成功了。

我已經把像一些參數:

private void CreationDeLaCarte(**int i, int j**) 
    {Label CaseForet = new Label(); 
    CaseForet.Background = Brushes.Black;   
    Grille.Children.Add(CaseForet); 
    **Grid.SetColumn(CaseForet, i); 
    Grid.SetRow(CaseForet, j);**