【问题标题】:How to remove the button inside a Dockpanel from layout - WPF如何从布局中删除 Dockpanel 内的按钮 - WPF
【发布时间】:2011-11-06 17:18:28
【问题描述】:

我有一个带有两个按钮的停靠面板

    <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>

为什么会这样。

【问题讨论】:

    标签: wpf visibility dockpanel


    【解决方案1】:

    Vinod,在 DockPanel 中,最后一项将始终占据 DockPanel 中布局的其余部分。因为您已经将 Top 设置为您的第一个按钮,所以我认为第二个按钮上的 Dock 属性将被忽略。

    除了使用 DockPanel,您还可以尝试使用 AutoSize 属性的“网格”面板?

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

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

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2020-11-08
          • 2014-08-07
          • 2016-09-30
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2010-12-16
          • 1970-01-01
          相关资源
          最近更新 更多