Какой элемент управления WPF Panel используется для привязки детей к ребру (эффект концертины)? - PullRequest
3 голосов
/ 26 апреля 2011

Это (надеюсь) очень просто ... Я пытаюсь найти панель WPF, которую можно использовать, чтобы при изменении размера все ее вертикально выровненные дочерние элементы (кнопки) смещались на одинаковое расстояние от нижнего края панели.похоже, они расширяются.

Очевидным является использование панели док-станции и привязки к нижней части, но, похоже, это не работает.Помещение туда более двух детей нарушает выравнивание, и что бы я ни делал, я не могу выстроить их вертикально.Я пробовал все виды панелей, но не испытывал радости.Я предполагаю, что это довольно просто, но это озадачило меня!

По сути, я пытаюсь получить эффект концертины, когда я нажимаю верхнюю кнопку, панель раскрывается и показывает все вспомогательные кнопки.И когда я снова нажимаю верхнюю кнопку, она падает.Я думаю, что я могу переместить каждого из детей с раскадровкой, но я должен думать, что все, что нужно моей истории, это изменить размер панели, и дети сохранят свои смещения и концертины ...

Любые идеи?

Заранее спасибо!

Ответы [ 3 ]

1 голос
/ 26 апреля 2011

Если «в основном я пытаюсь получить эффект концертины» - это суть вашего вопроса (я прав?), Тогда вы пытались использовать встроенный расширитель WPF? Мне кажется, что вы пытаетесь создать свой собственный ...

1 голос
/ 26 апреля 2011

Я полагаю, что вы можете использовать Canvas и установить свойства элементов управления Canvas.Top, Left, Right и Bottom, чтобы получить тот же эффект, что и для WinForms и привязки.

<Canvas>
    <Button Canvas.Left="30" Canvas.Bottom="10" Content="Button 1"  Name="button1"  />
    <Button Canvas.Left="90" Canvas.Bottom="10" Content="Button 2"  Name="button2"  />
</Canvas>

enter image description here

Также Grid может делать подобное:

<Grid>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="*" />
        <ColumnDefinition Width="*" />
    </Grid.ColumnDefinitions>
    <Grid.RowDefinitions>
        <RowDefinition Height="*" />
        <RowDefinition Height="40" />
    </Grid.RowDefinitions>
    <Button Grid.Row="1" Grid.Column="0" Content="Button 1"  Name="button1" Margin="5" />
    <Button Grid.Row="1" Grid.Column="1" Content="Button 2"  Name="button2" Margin="5" />
</Grid>
0 голосов
/ 26 апреля 2011

Я не совсем понимаю, что вы имеете в виду под эффектом концертины, это может быть связано и с растяжением. Если вы хотите привязать, вы можете использовать Grid:

<Grid>
    <Grid.RowDefinitions>
        <RowDefinition /> <!-- Gets all available space i.e. resizes with window -->
        <RowDefinition Height="Auto"/> <!-- Sizes to content, always stays at the bottom -->
    </Grid.RowDefinitions>
    <!-- Resizable content goes in Grid.Row="0" -->
    <StackPanel Grid.Row="1" Orientation="Horizontal" VerticalAlignment="Top" HorizontalAlignment="Right" Margin="5">
        <Button Name="ButtonOK" HorizontalAlignment="Right" Width="100" Margin="5" Click="ButtonOK_Click" IsDefault="True">OK</Button>
        <Button Name="ButtonCancel" HorizontalAlignment="Right" Width="100" Margin="5" Click="ButtonCancel_Click" IsCancel="True">Cancel</Button>
    </StackPanel>
</Grid>
...