如何从布局中删除Dockpanel内的按钮 - WPF

时间:2011-08-30 11:11:38

标签: wpf visibility dockpanel

我有一个带有两个按钮的dockpanel

    <Window x:Class="PracticeWPF.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525">
<DockPanel LastChildFill="True">
            <Button Name="btn1" DockPanel.Dock="Top">Button 1</Button>        
            <Button Name="btn2" DockPanel.Dock="Top" Visibility="Collapsed">Button 2</Button>       
    </DockPanel></Window>

问题是按钮btn2正在参与布局,即使它的Visibility =“Collapsed”。我希望btn1必须填满整个空间。 相反,btn1坚持窗户的顶部位置。 上面的代码必须等同于

<DockPanel LastChildFill="True">
        <Button Name="btn1" DockPanel.Dock="Top">Button 1</Button>
        <!--
        <Button Name="btn2" DockPanel.Dock="Top" Visibility="Collapsed">Button 1</Button>
        -->
    </DockPanel>

为什么会这样。

3 个答案:

答案 0 :(得分:3)

Vinod,在DockPanel中,最后一项将始终采用DockPanel中的其余布局。因为你已经将Top设置为第一个按钮,我认为第二个按钮上的Dock属性将被忽略。

而不是使用DockPanel,您可以使用AutoSize属性尝试“网格”面板吗?

答案 1 :(得分:0)

您可以通过在DockPanel.Children属性中手动添加/删除按钮来获得所需的行为。更多关于MSDN Panel.Children article.

答案 2 :(得分:0)

  

以上代码必须等同于......

不,这只是你的错误假设。折叠按钮仍然是最后一个子节点,因此第一个按钮仍然停靠在顶部,折叠按钮与布局无关。