2016-08-18 81 views
0

我有一个工具栏,当窗口调整大小时,我想让它的项目堆叠在彼此的顶部(就像它在引导程序网格内,如果它是HTML)...在调整大小时制作动态工具栏XAML

<Grid VerticalAlignment="Top" x:Name="TopBar" Margin="0,0,0.35,0" Opacity="0.8"> 
     <Grid.ColumnDefinitions> 
      <ColumnDefinition Width="*" /> 
      <ColumnDefinition Width="auto" /> 
     </Grid.ColumnDefinitions> 
    <textbox Grid.Column="0" content="text"/> 
    <ToolBarPanel HorizontalAlignment="Right" VerticalAlignment="Center" Orientation="Horizontal" Grid.Column="1"> 
     <WrapPanel Orientation="Horizontal" Width="500"> 
      <Button content="toolbar_item"></Button> 
      <Button content="toolbar_item"></Button> 
      <Button content="toolbar_item"></Button> 
      <Button content="toolbar_item"></Button> 
      <Button content="toolbar_item"></Button> 
      <Button content="toolbar_item"></Button> 
     </WrapPanel> 
    </ToolBarPanel> 
</Grid> 

但是,在这个设置下,按钮在加载时堆叠,但它们不是动态的,当窗口变小时它们不会继续堆叠,它们只会溢出。有没有办法做到这一点?

回答

0

只要试试这个。您所说的效果可以通过使用ViewBox来实现。请检查下面的代码。

<Grid VerticalAlignment="Top" x:Name="TopBar" Margin="0,0,0.35,0" Opacity="0.8"> 
    <Viewbox> 
     <ToolBarPanel HorizontalAlignment="Right" VerticalAlignment="Center" Orientation="Horizontal" > 
     <WrapPanel> 
       <Button Content="toolbar_item"></Button> 
      <Button Content="toolbar_item"></Button> 
      <Button Content="toolbar_item"></Button> 
      <Button Content="toolbar_item"></Button> 
      <Button Content="toolbar_item"></Button> 
      <Button Content="toolbar_item"></Button> 
     </WrapPanel> 
    </ToolBarPanel> 
    </Viewbox> 
</Grid> 
+0

使用Viewbox在调整大小时使按钮更小/更大,但它并没有真正地将它们堆叠在彼此之上。我想保持按钮的大小相同,只是在调整大小时使列宽变小,允许按钮垂直溢出并堆叠,如果这样做合理的话。我已经更新了包含我设置的网格列的代码,不知道它是否有所作为。 – Whirlwind991

+0

我不认为这是可能的。由于工具栏的方向是水平的,因此不能指望以相反方向自动调整大小和堆叠。 如果非常需要,我认为您可能需要编写逻辑,即在调整大小超出特定限制时,将方向更改为垂直并手动堆叠它们。 – ViVi

+0

是的,我必须做一些工作。无论如何,感谢您的帮助! – Whirlwind991