2015-08-30 2 views
0

У меня есть эта кнопка WPF в моем StackPanel:WPF: почему кнопка остается на левой стороне?

<StackPanel Grid.ColumnSpan="6" Grid.Row="12" Orientation="Horizontal" HorizontalAlignment="Stretch" VerticalAlignment="Center" Background="LightGray" Height="40"> 
      <Button x:Name="btnSave" Click="btnSave_Click" Content="{x:Static res:Strings.ToolPanelEditView_Button_Save}" HorizontalAlignment="Right" /> 
</StackPanel> 

По какой-то причине, кнопка показывает на левой, хотя я поставил его HorizontalAlignment к Right:

enter image description here

Как я могу сделать мой Сохранить кнопку справа?

P.S. когда я изменить StackPanel-х HorizontalAlignment к Right вместо Stretch, кнопка действительно показывает на правой, как он должен (но тогда серый фон из StackPanel не растягиваются либо ...

+0

Try используя 'Grid' вместо' StackPanel' – chathux

+0

я не показал на snippset, но у меня есть дополнительная кнопка есть (кнопка отмены). Если я изменил 'StackPanel' на' Vertical', это сделает эти кнопки одним над другим ... – user1028741

ответ

0

Я думаю, что Grid больше подходит для случая

<Grid HorizontalAlignment="Stretch" VerticalAlignment="Center" Background="LightGray" Height="40"> 
     <Grid.ColumnDefinitions> 
      <ColumnDefinition Width="*"/> 
      <ColumnDefinition Width="Auto"/> 
      <ColumnDefinition Width="Auto"/> 
     </Grid.ColumnDefinitions> 
     <Button x:Name="btnSave" Grid.Column="1" Content="Save" HorizontalAlignment="Right" /> 
     <!--Your Other Button Grid.Column="2"--> 
    </Grid> 

или вы могли бы, а также заменить stackPanel с DockPanel

0

вы можете использовать DockPanel в качестве контейнера, растянуть его и прикрепить кнопку с правой стороны

<DockPanel Grid.ColumnSpan="6" Grid.Row="12" HorizontalAlignment="Stretch" VerticalAlignment="Center" Background="LightGray" Height="40"> 
     <Button Content="Save" DockPanel.Dock="Right"/> 
     <Button Content="Cancel" DockPanel.Dock="Right"/> 
    </DockPanel> 
Смежные вопросы