C#WPF网格列被误解了

时间:2016-11-24 12:46:29

标签: c# wpf xaml

我已经开始在WPF C#中开发一个新的应用程序。我遇到的问题是网格列定义。

我已将窗口划分为单独的部分,使用网格的行和列定义(请参阅下面的代码)。

我有两排。第一个当前是空的,第二个包含一个新的网格,进一步分为列。 所有网格都在边界内。

我得到的奇怪行为是代码的这一部分:

<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>

1 个答案:

答案 0 :(得分:2)

问题是列计数从0开始。你应该改变你的代码:

<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>