答案 0 :(得分:1)
我将使用具有以下布局的Grid
来实现它:
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="Auto" x:Name="SecondColumn" />
<ColumnDefinition Width="Auto" x:Name="ThirdColumn" />
</Grid.ColumnDefinitions>
...
</Grid>
现在使用PaneClosing
和PaneOpening
事件来适当地更改按钮的Grid.Column
和Grid.Row
值。
因此,当窗格打开时,我将进行设置:
Grid.Row
设置为0 Grid.Column
分别为0、1、2 SecondColumn.Width
和ThirdColumn.Width
至new GridLength(1, GridUnitType.Star)
关闭时:
Grid.Row
分别为0、1、2 Grid.Column
设置为0 SecondColumn.Width
和ThirdColumn.Width
至new GridLength(0)
另一种解决方案是使用StackPanel
并仅在Orientation
和Horizontal
之间切换其Vertical
,尽管那不会使按钮彼此相邻-要添加空格,您还必须修改按钮的Margin
。