2016-11-24 82 views
0

我已經開始在WPF C#中開發一個新的應用程序。我遇到的問題是關於網格列定義。C#WPF Grid Grid被誤解了

我已經使用網格的行和列定義(見下面的代碼)將我的窗口分成不同的部分。

我有兩行。第一個目前是空的,第二個包含一個新的網格,即進一步分爲多列。 所有網格都在邊界內。

的怪異的行爲我得到,是此部分代碼:

<Border BorderThickness="1" BorderBrush="#ffcd22" Grid.Column="1"> 
       <Grid> 

       </Grid> 
      </Border> 
      <Border BorderThickness="1" BorderBrush="#ffcd22" Grid.Column="2"> 
       <Grid> 

       </Grid> 
      </Border> 
      <Border BorderThickness="1" BorderBrush="#ffcd22" Grid.Column="3"> 
       <Grid> 

       </Grid> 
      </Border> 

的問題是,那首「亞格」實際上相當於 第二列第二和第三都提到第三欄。 換句話說,無論何時我在第二個子網格(Grid.Column =「2」的那個)中放置任何類型的控件時,控件都會出於某種原因出現在第三列中。

我一直在擺弄它,似乎無法理解我得到的行爲。

又如:我已經把控制在第二列如下:

<Border BorderThickness="1" BorderBrush="#ffcd22" Grid.Column="2"> 
        <Grid> 
         <TextBox Width="100" Height="50"></TextBox> 
        </Grid> 
       </Border> 

下面的圖片代表了什麼我: enter image description here

全XAML代碼:

<Border BorderThickness="1" BorderBrush="#ffcd22" Margin="10,10,10,10"> 
    <Grid> 
     <Grid.RowDefinitions> 
      <RowDefinition Height="100" /> 
      <RowDefinition Height="*" /> 
     </Grid.RowDefinitions> 
     <Border BorderThickness="1" BorderBrush="#ffcd22" Margin="-1,-1,-1,-1" Grid.Row="2"> 
      <Grid> 
       <Grid.ColumnDefinitions> 
        <ColumnDefinition Width="200" /> 
        <ColumnDefinition Width="*" /> 
        <ColumnDefinition Width="200" /> 
       </Grid.ColumnDefinitions> 
       <Border BorderThickness="1" BorderBrush="#ffcd22" Grid.Column="1"> 
        <Grid> 

        </Grid> 
       </Border> 
       <Border BorderThickness="1" BorderBrush="#ffcd22" Grid.Column="2"> 
        <Grid> 

        </Grid> 
       </Border> 
       <Border BorderThickness="1" BorderBrush="#ffcd22" Grid.Column="3"> 
        <Grid> 

        </Grid> 
       </Border> 
      </Grid> 
     </Border> 
    </Grid> 
+0

3 ColumnDefinitions有索引0,1,2,不是1,2,3 ... – ASh

回答

2

問題是列編號從0開始。你應該改變你r代碼是這樣的:

<Border BorderThickness="1" BorderBrush="#ffcd22" Grid.Column="0"> 
    <Grid> 

    </Grid> 
</Border> 
<Border BorderThickness="1" BorderBrush="#ffcd22" Grid.Column="1"> 
    <Grid> 

    </Grid> 
</Border> 
<Border BorderThickness="1" BorderBrush="#ffcd22" Grid.Column="2"> 
    <Grid> 

    </Grid> 
</Border> 
+0

哇。我深深地陷入了這個問題,我忽略了這樣一個明顯的問題。感謝堆! –