WPF控件额外像素源

WPF control extra pixels source

我在这个布局中有这些简单的 wpf 控件。我的问题是 TextBox 中额外的像素来自哪里。看起来 TextBox 不尊重 Width='Auto' 属性.

我希望使 Grid Column 0 的宽度正好等于 TextBox 的宽度。

image of rendered code

 <Grid ShowGridLines="True">
 <Grid.ColumnDefinitions>
            <ColumnDefinition Width="Auto" />
            <ColumnDefinition Width="Auto" />
        </Grid.ColumnDefinitions>
        <Grid.RowDefinitions>
            <RowDefinition Height="Auto" />
            <RowDefinition Height="Auto" />
        </Grid.RowDefinitions>
        <StackPanel>
            <TextBox Text="This TextBox located in Row 0 Column 0"
                     Width="Auto"></TextBox>
        </StackPanel>
        <TextBox Grid.Row="1"
                 Text="This TextBox located in Row 1 Column 0 with Column Span of 2"
                 Grid.ColumnSpan="2"></TextBox>
    </Grid> 

WPF 的布局规则有时会令人困惑,不是吗? :)

这里的问题是您将两列的宽度都设置为 AutoGrid 只会在需要或有充分理由的情况下减小列宽。由于您对第二列也使用了 Auto,并且由于不需要增加该列的大小来适应较长的第二行文本,因此您得到了您所看到的大小。

如果您确实希望第一列尽可能小,请将 第二 列宽度设置为 * 而不是 Auto。 (或者只是省略 Width 属性……* 是默认值。)