WPF从窗口中删除网格

时间:2013-10-14 09:37:24

标签: c# .net wpf grid

我的Grid应用程序中有WPF

<Grid Name="MainGrid">

    <Grid.RowDefinitions>
        <RowDefinition Height="70" Name="BarRowDef" />
        <RowDefinition Height="*"/>
    </Grid.RowDefinitions>

    <Grid Name="BarGrid" Grid.Row="0" Height="70" VerticalAlignment="Top" Background="#FF802C2C">
        <Button Content="History" Focusable="False" Width="100" Height="60" HorizontalAlignment="Left" VerticalAlignment="Center" Name="HistoryButton" Click="HistoryButton_Click"/>
    </Grid>

    <Grid Name="MiddleGrid" Grid.Row="1">
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="*"/>
        </Grid.ColumnDefinitions>
        <WebBrowser HorizontalAlignment="Stretch" Name="Browser" VerticalAlignment="Stretch" LoadCompleted="Finish_Load" Grid.Column="1"/>
    </Grid>


</Grid>

我想浏览器会有全屏选项。所以我所做的就是在调用EnterFullscreen的情况下:

BarRowDef.Height = new GridLength(0);

接下来发生的事情是浏览器从页面顶部开始,但在底部我有一个大小为BarGrid的空白区域。 知道可能是什么问题吗?

修改

这是完整的EnterFullScreenMode方法:

public void EnterFullScreenMode()
    {
        BarRowDef.Height = new GridLength(0);

        if (this.WindowState == System.Windows.WindowState.Maximized)
        {
            this.WindowState = System.Windows.WindowState.Normal;
        }

        this.WindowStyle = System.Windows.WindowStyle.None;
        this.WindowState = System.Windows.WindowState.Maximized;

        IsFullScreen = true;
    }

2 个答案:

答案 0 :(得分:2)

我认为设置为Visibility.Hidden仍然会导致渲染一些空格。

您可以将行的内容(BarGrid)设置为Collapsed,这意味着:“不显示元素,也不要在布局中为其保留空间”。

BarGrid.Visibility = Visibility.Collapsed;

编辑:评论中的其他详细信息

还要确保从RowDefinition中删除高度设置。 而不是:

<RowDefinition Height="70" Name="BarRowDef"/>

使用:

<RowDefinition Height="Auto"/>

答案 1 :(得分:1)

我不确定你是什么意思,EnterFullscreen事件是什么?

你可以试试这个:

BarGrid.Visibility = Visibility.Hidden;

而不是:

BarRowDef.Height = new GridLength(0);