Горизонтальная панель Stackpanel Fill Parent - PullRequest
12 голосов
/ 28 марта 2012

Возможно ли, чтобы <StackPanel> или метки (или кнопки, что угодно) проходили горизонтально через родительский элемент управления (например, Window) и заполняли ли он все разрешенное пространство?

Например, если у меня было 3 элемента управления

_ ширина окна_ _

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

или 2 элемента управления

_ ширина окна_ _

[1] _ __ _ __ _ [2]

в каждом случае используется полная ширина окна, при этом каждый элемент управления краем выравнивается по левому и правому краям соответственно.

Ответы [ 2 ]

21 голосов
/ 28 марта 2012

StackPanel будет складывать элементы управления, поэтому нет короткого ответа. Это не то, для чего предназначена StackPanel.

Вы можете использовать сетку, как предложил Влад. Примерно так:

    <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>
0 голосов
/ 31 октября 2013
        StackPanel m_pstackpanel = (StackPanel)this.Parent;
        m_pstackpanel.Children.Clear();
        keypadclasslist keypadWindow = new keypadclasslist(m_pLstReceiver);
        m_pstackpanel.Children.Add(keypadWindow);
...