2017-06-14 59 views
2

我在这种布局中有这些简单的wpf控件。我的问题是来自TextBox的额外像素在哪里。它看起来像TextBox不尊重Width='Auto'财产。WPF控件额外像素来源

我正在寻找使网格列0的宽度完全等于文本框的宽度。

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> 

回答

2

WPF的布局规则有时被混淆,他们不能? :)

此处的问题是,您已将宽度设置为Auto两列。 Grid只会减少列宽,如果它需要或有一个很好的理由。由于第二列也使用了Auto,并且由于该列不需要增加大小以适应更长的第二行文本,因此您可以看到所看到的大小。

如果你真的想要的是第一列到尽可能小的列的宽度设置为*,而不是Auto。 (或者只是省略Width属性,默认为*。)

+0

谢谢。这很有用。 – Sami