2016-09-16 7 views
0

自動列に問題があり、私が望むようにサイズを変更していません。 私は、次のコードを使用しています:WPF。自動列がColumnSpanで正しい方法でサイズ変更されない

<Grid> 
    <Grid.ColumnDefinitions> 
     <ColumnDefinition Width="auto"/> 
     <ColumnDefinition Width="auto"/> 
    </Grid.ColumnDefinitions> 
    <Grid.RowDefinitions> 
     <RowDefinition Height="auto"/> 
     <RowDefinition Height="10"/> 
     <RowDefinition Height="auto"/> 
    </Grid.RowDefinitions> 
    <Grid Grid.ColumnSpan="2"> 
     <Grid.ColumnDefinitions> 
      <ColumnDefinition Width="auto"/> 
      <ColumnDefinition Width="5"/> 
      <ColumnDefinition Width="300"/> 
     </Grid.ColumnDefinitions> 
     <TextBlock Text="User: "/> 
     <TextBox Grid.Row="2" Grid.Column="2" /> 
    </Grid> 
    <Button Grid.Row="2" Grid.Column="1" Content="Search"/> 
</Grid> 

私は仕事にこれをしたい方法は、第二の自動車の列は(それが正しいグリッドの下に整列されるように)単にボタンのために必要な幅を取り、そのことです最初のauto列は残りのグリッドに必要な残りの幅をとります。

ただし、2番目の列が長くなり、幅が*列のように分割されます。スクリーンショット

link to image as I do not have the right rep to post

下記参照これは、オート列がどのように動作するかの私の誤解ですか?もしそうなら、これに最善の回避策は何でしょうか。これは単純なコードなので、複数の列があるフォームの一部であるため、オブジェクトを他のグリッドやスタックパネルで大量にラップすることは避けてください。

私はそれがコンテンツを「検索」

EDITに必要な正確にサイズになりたいともボタンの幅を設定することは論外でもある: 私が達成しようとしているレイアウトは何かでありますlike this

答えて

1

まず、これは1つのグリッドでしか達成できません。子グリッドの必要はありません。このコードを使用することができます。理解を深めるためには、達成したいイメージを提供することができます。

<Grid> 
      <Grid.ColumnDefinitions> 
       <ColumnDefinition Width="*"/> 
       <ColumnDefinition Width="auto"/> 
      </Grid.ColumnDefinitions> 
      <Grid.RowDefinitions> 
       <RowDefinition Height="auto"/> 
       <RowDefinition Height="10"/> 
       <RowDefinition Height="auto"/> 
      </Grid.RowDefinitions> 
      <TextBlock Text="User: "/> 
      <TextBox Grid.Column="1" /> 
      <Button Grid.Row="2" Grid.Column="1" Content="Search" HorizontalAlignment="Right" Width="Auto"/> 
     </Grid> 
+0

私が編集したスクリーンショットは私が編集したものです。 –

+0

私は自分の答えを編集しました。これを使用してください。 –

+0

上記のコードを使用してください。 –

関連する問題