水平Stackpanel填充父控制

时间:2012-03-28 16:43:42

标签: wpf xaml layout stackpanel

是否可以在其父控件(例如<StackPanel>)上横向移动Window或标签(或按钮,无论如何)并填写所有允许的空间?

例如,如果我有3个控件

  

_ 窗口宽度_ _

     

[1] _ _ [2] _ _ [3]

或2个控件

  

_ 窗口宽度_ _

     

[1] _ __ _ __ _ [2]

在每种情况下都使用窗口的整个宽度,每个边缘控件分别左右对齐。

2 个答案:

答案 0 :(得分:21)

StackPanel会叠加控件,所以不是简短的答案。这不是StackPanel的设计目标。

你可以像Vlad建议的那样使用网格。像这样:

    <Grid HorizontalAlignment="Stretch">
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="auto"/>
            <ColumnDefinition Width="*"/>
            <ColumnDefinition Width="auto"/>
            <ColumnDefinition Width="*"/>
            <ColumnDefinition Width="auto"/>
        </Grid.ColumnDefinitions>
        <Button Width="20" Height="20" Grid.Column="0"/>
        <Button Width="20" Height="20" Grid.Column="2"/>
        <Button Width="20" Height="20" Grid.Column="4"/>
    </Grid>

答案 1 :(得分:-4)

        StackPanel m_pstackpanel = (StackPanel)this.Parent;
        m_pstackpanel.Children.Clear();
        keypadclasslist keypadWindow = new keypadclasslist(m_pLstReceiver);
        m_pstackpanel.Children.Add(keypadWindow);