2016-11-24 100 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

哇。我深深地陷入了这个问题,我忽略了这样一个明显的问题。感谢堆! –