我正在制作一个工具栏。我希望窗口的宽度等于按钮的总宽度。 StackPanel似乎非常适合这项工作,因为它可以解决所有问题,但它不会延伸。
<Window Width="auto">
<StackPanel Orientation="Horizontal" Width="auto">
<Button />
<Button />
</StackPanel>
</Window>
我如何使这项工作?
答案 0 :(得分:5)
我找到了一个非常简单的解决方案!几乎每个人(我一直在搜索大量的页面)建议切换控件类型或更复杂的东西,但事实上,它更简单:
<Window SizeToContent="Width"
这是唯一需要做的改变。
这个位的来源:https://stackoverflow.com/a/2317914/971583,这个问题的排名第二的答案,在我看来是更好的答案。
答案 1 :(得分:0)
使用带有列的网格。
<Grid HorizontalAlignment="Stretch">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Button />
<Button Grid.Column="1" />
<Button Grid.Column="2" />
<Button Grid.Column="3" />
</Grid>
答案 2 :(得分:0)
您可以使用UniformGrid而不是StackPanel使窗口的宽度等于按钮的总宽度。
<UniformGrid Margin="10" Rows="1" HorizontalAlignment="Right"
VerticalAlignment="Bottom">
<Button Grid.Column="0" Content="No" FontSize="18" Margin="5" Padding="6,3"/>
<Button Grid.Column="1" Content="Yes, Absolutely" Margin="5" Padding="6,3"/>
<Button Grid.Column="2" Content="Maybe" Margin="5" Padding="6,3"/>
</UniformGrid>
UniformGrid提供的eacg单元格高度相同且宽度相同。这就是您想要的,因为您可以避免手动设置按钮大小。
<强>更新强>
我建议不要使用Stackpanel。即使你让Stackpanel填充其父级,它的孩子仍然会#Stack;堆叠&#34;并且不会填满Stackpanel。
答案 3 :(得分:0)
根据您的设置,您可以简单地使用StackPanel的对齐方式来实现。例如此XAML
<Window Width="350" Height="350" ...>
<Grid>
<StackPanel
Background="Green">
<Border
Width="100"
Height="100"
Background="Blue" />
<Border
Width="100"
Height="100"
Background="Red" />
</StackPanel>
</Grid>
</Window>
将创建此内容(面板会扩展到父母的尺寸):
此面板:
<Window Width="350" Height="350" ...>
<Grid>
<StackPanel
HorizontalAlignment="Center"
VerticalAlignment="Center"
Background="Green">
<Border
Width="100"
Height="100"
Background="Blue" />
<Border
Width="100"
Height="100"
Background="Red" />
</StackPanel>
</Grid>
</Window>
将创建此文件(大小为包含的两个边框):