WPF控制额外像素源

时间:2017-06-14 14:53:39

标签: c# wpf textbox grid stackpanel

我在这个布局中有这些简单的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> 

1 个答案:

答案 0 :(得分:2)

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

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

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