2014-01-28 9 views
0
<DockPanel Grid.Row="1" HorizontalAlignment="Right" Width="300"> 
    <Button x:Name="startPackageSendButton" Command="{Binding StartPackageSendingProcessCommand}" Style="{StaticResource blueButtonStyle}" Content="Start" Width="100" VerticalAlignment="Top" Margin="0,0,0,0" Visibility="Visible" HorizontalAlignment="Right"/> 
    <Button x:Name="clearPackageSendButton" Command="{Binding ClearPackageSendingProcessCommand}" Style="{StaticResource blueButtonStyle}" Content="Clear" Width="100" VerticalAlignment="Top" Margin="0,0,0,0" Visibility="Collapsed" HorizontalAlignment="Right"/> 
    <Button x:Name="cancelPackageSendButton" Command="{Binding CancelPackageSendingProcessCommand}" Style="{StaticResource blueButtonStyle}" Content="Stop" Width="100" VerticalAlignment="Top" Margin="0,0,0,0" Visibility="Visible" HorizontalAlignment="Right"/> 
</DockPanel> 

我正在使用Dockpanel堆叠一些水平对齐的按钮。 如果某些按钮不是Visible,我在按钮之间留有空白。只在码表板中对齐可见元素

如何在没有将Visibility设置为可见的情况下消除空白空间? 有没有一种技术可以达到这种效果?

编辑:我改变了隐藏建议折叠。

回答

4

我怀疑你是通过设置Visibility.Hidden来隐藏控件。您可以使用Visibility.Collapsed

更多here

不同的是,Visibility.Hidden隐藏了控制,但 保留它在布局中占据的空间。所以它会呈现空白 而不是控件。

Visibilty.Collapsed不会渲染 控件并且不保留空白。控制 将采取的空间是'折叠',因此名称。

编辑完成后,显然你使用的是Hidden。使用折叠来代替:

<DockPanel Grid.Row="1" HorizontalAlignment="Right" Width="300"> 
    <Button Visibility="Collapsed"/> 
    <Button Visibility="Visible"/> 
    <Button Visibility="Collapsed"/> 
</DockPanel> 

编辑

我检查你的代码示例删除风格和命令的一部分后,发现几个问题:

  1. 从DockPanel中删除硬编码的宽度(它会自动从孩子控制中挑选大小)。
  2. 从DockPanel中删除HorizontalAlignment="Right"
  3. 请将LastChildFill设置为False以防万一您不希望最后添加的孩子占用所有空间。

这是应该的样子和它完美的作品:

<DockPanel Grid.Row="1" LastChildFill="False"> 
    <Button x:Name="startPackageSendButton" Content="Start" Width="100" 
      VerticalAlignment="Top" Margin="0,0,0,0" Visibility="Collapsed" 
      HorizontalAlignment="Right"/> 
    <Button x:Name="clearPackageSendButton" Content="Clear" Width="100" 
      VerticalAlignment="Top" Margin="0,0,0,0" Visibility="Visible" 
      HorizontalAlignment="Right"/> 
    <Button x:Name="cancelPackageSendButton" Content="Stop" Width="100" 
      VerticalAlignment="Top" Margin="0,0,0,0" Visibility="Collapsed" 
      HorizontalAlignment="Right"/> 
</DockPanel> 
+0

你的答案是有效的。我已将Visibility.Collapsed设置为XAML中的默认可见性,并且我在后面的代码中操纵可见性。我已经改变了一切,而不是隐藏,但效果仍然存在... – no9

+0

请张贴相同的快照。另外,请尝试发布复制问题的小样本。代码中必须有一些东西,因为按照框架级别,它应该可以正常工作。 –

+0

@ no9 - 查看答案中的更新,是否有帮助。 –