重新定位控制取决于其他控制的可见性

时间:2015-03-06 02:31:29

标签: wpf xaml

实际上,以下答案并不能解决我的目的。因此提出另一个问题。 How control re-position depends on other control visibility in same panel。 我在堆栈面板中有两个按钮。最初B1按钮位于顶部,然后是B2。

    <Grid>
     <StackPanel >
      <Button Content="B1" Height="20" Width="100" Visibility="Visible"/>
      <Button Content="B2" Height="20" Width="100" Visibility="Visible"/>
     </StackPanel>
    </Grid>

所以,使用这个XAML,当我打开应用程序时,我可以在UI中看到B1和B2按钮。 现在,实际上,如果我执行B1隐藏的可见性,则B2将采用B1按钮的位置,如果我执行B1的可见性&#34;可见&#34;,则在UI中, B1&amp; B2都将显示。如何实现这一功能?

1 个答案:

答案 0 :(得分:1)

你可以使用Visibility.Collapsed按钮来完成它。

<StackPanel>
        <StackPanel >
            <Button Content="B1" Height="20" Width="100" Visibility="Visible" x:Name="B1"/>
            <Button Content="B2" Height="20" Width="100" Visibility="Visible" x:Name="B2"/>
        </StackPanel>
        <StackPanel Orientation="Horizontal">
            <Button Content="Collapse B1" Click="Button_Click"/>
            <Button Content="Collapse B2" Click="Button_Click_1"/>
            <Button Content="Visible Both" Click="Button_Click_2"/>
        </StackPanel>
    </StackPanel>
  public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();   

    }

    private void Button_Click(object sender, RoutedEventArgs e)
    {
        B1.Visibility = Visibility.Collapsed;
    }

    private void Button_Click_1(object sender, RoutedEventArgs e)
    {
        B2.Visibility = Visibility.Collapsed;
    }

    private void Button_Click_2(object sender, RoutedEventArgs e)
    {
        B1.Visibility = Visibility.Visible;
        B2.Visibility = Visibility.Visible;
    }
}