2009-09-03 6 views
2

私はStackpanelを持っていて、その内容に関して自動的にサイズを設定したいと思っていますが、ではなく、がStackpanelの高さに自動的に入ります。最大のアイテムまで)。私は同じ問題を抱えているWrapPanelも試しました。WPF:StackPanel item auto-height question

TextBoxの「テスト」をテキストの中心に合わせ、自動的にサイズを変更したい場合は、

    <TextBox Name="test" VerticalContentAlignment="Center">test</TextBox> 

        <StackPanel Name="ParameterList" Orientation="Vertical"> 

          <TextBox Name="ParamComment" Foreground="Gray">no comment..</TextBox> 


          <TextBox Name="ParamComment2" Foreground="Gray">no comment..</TextBox> 
        </StackPanel>            
       </WrapPanel> 

答えて

3

あなたはこのように意味ですか?

|stackpanelitem 
test|stackpanelitem 
    |stackpanelitem 

これを試してみてください。

<Grid> 
    <Grid.ColumnDefinitions> 
    <ColumnDefinition Width="Auto"/> 
    <ColumnDefinition Width="*"/> 
    </Grid.ColumnDefinitions> 
    <TextBox VerticalAlignment="Center" Text="test"/> 
    <StackPanel Grid.Column="1"> 
    <TextBox Text="stackpanelitem"/> 
    <!-- other items --> 
    </StackPanel> 
</Grid> 
+0

はい、私はまさにそれを意味しました。答えをありがとう。 StackPanelにGrid.Column = "1"が設定されていますが、TextBoxにGrid.Column = "0"が設定されていないのはなぜですか? "Auto"と "*"の違いは何ですか? – codymanix

+1

ご覧のとおり、私はグリッドの2つの列を定義しました。 Grid.Columnは添付プロパティで、このコントロールが配置されているグリッドの列を指定するだけです。 0はデフォルト値なので、必要ありません。 Autoは、列が自動的に最も幅の広い項目に自動的にサイズ変更されることを意味します。*は、使用可能なスペースをすべて使用することを意味します。私が幅*を持つ3番目の列を指定した場合、2つの列はそれぞれ残りの領域の半分を使用します。 – Botz3000