2011-04-29 139 views
1

我想对齐dockpanel右侧的按钮,但我隐藏并显示基于certian条件的按钮。我需要根据所显示的内容进行正确的证明。目前我使用此:WPF我如何对齐右侧的按钮与x个按钮

<DockPanel HorizontalAlignment="Stretch" Height="34" Margin="0,0,2,35" VerticalAlignment="Bottom"> 
     <Button DockPanel.Dock="Right" Height="23" x:Name="btnOne" Click="btnOne_Click" Margin="0,0,5,5" VerticalAlignment="Bottom" HorizontalAlignment="Right" Width="Auto"> 
      <TextBlock x:Name="txtBtnOneText" /> 
     </Button> 
     <Button DockPanel.Dock="Right" Height="23" Width="Auto" x:Name="btnTwo" Visibility="Hidden" Click="btnTwo_Click" HorizontalAlignment="Right" Margin="0,0,5,5" VerticalAlignment="Bottom"> 
      <TextBlock x:Name="txtBtnTwoText" /> 
     </Button> 
    </DockPanel> 

当我只显示按钮btnOne话,我希望它是正确合理的,当我只显示btnTwo话,我希望它是右对齐,或者当我告诉他们两个,然后我想btnOne在最右边,btnTwo在btnOne的左边是5px。

谢谢!

回答

5

相反DockPanel中的尝试使用的StackPanel这样的 -

 <StackPanel Grid.Row="0" Orientation="Horizontal"> 
      <Button x:Name="btn1" Content="btn1" Height="34" /> 
      <Button x:Name="btn2" Margin="5,0,0,0" Content="btn2" Height="34" /> 
     </StackPanel> 

而刚刚设置按钮的知名度,崩溃,而不是隐藏的,当你想要一个按钮隐藏并且不会占用预留的空间。而如果将可见性设置为隐藏,则不会在UI上显示,但它仍将占用为其保留的空间。

+0

谢谢,我仍然在学习更多关于WPF的知识。 – 2011-04-29 14:38:18

2

那么你有什么麻烦?我会用一个简单的StackPanel做到这一点:

<StackPanel HorizontalAlignment="Right" Orientation="Horizontal"> 
    <Button>One</Button> 
    <Button Margin="3 0 0 0">Two</Button> 
</StackPanel> 
+0

嘿肯特,谢谢你的回应。我遇到麻烦如果btnTwo是唯一显示的那么我需要用btnOne替换它,反之亦然。然后,如果两者都显示btnTwo应该有一个5px的右边距。 – 2011-04-29 13:17:25