WPF c#webbrowser滚动顶部菜单

时间:2012-04-03 14:04:38

标签: c# wpf menu browser

我有一个带有菜单和内部滚动查看器的网格。在scrollviewer中,我有一个带有另一个网格的组框和一个webbrowser元素。

现在当我使窗口小于我的webbrowser内容的内容时出现问题,并在滚动查看器中向下滚动。一切都有一个边距,所以它保持在顶部菜单下面,但webbrowser元素没有,因此覆盖菜单。有办法解决这个问题吗?我无法弄明白:s Margins&填充不起作用。我希望它周围的网格元素或其他东西可以解决问题,但没有任何作用。

编辑:

好的,我尝试添加xaml代码,但请记住它非常庞大,所以这是极端的短版本:( webbrowser元素位于代码的底部)

<Window x:Class="Cleaning_Masters_Official.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="Cleaning Masters Offerte Packet - nieuw.off" Name="Main"  Width="{DynamicResource {x:Static SystemParameters.MaximizedPrimaryScreenWidthKey}}"
        Icon="bin\Debug\Images\Main.ico"
    Height="{DynamicResource {x:Static SystemParameters.MaximizedPrimaryScreenHeightKey}}" Closing="Main_Closing"
    WindowStartupLocation="CenterScreen" WindowStyle="SingleBorderWindow" WindowState="Maximized">

    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="22" />
            <RowDefinition Height="*" />
            <RowDefinition Name="rowbar" Height="0" />
        </Grid.RowDefinitions>

        <ScrollViewer Margin="10" Grid.Row="1">
            <TabControl Name="tabChapters">

                <TabItem Header="Algemeen" Name="tabGeneral">
                    <Grid>
                        <Grid.ColumnDefinitions>
                            <ColumnDefinition Width="*" />
                            <ColumnDefinition Width="*" />
                            <ColumnDefinition Width="*" />
                        </Grid.ColumnDefinitions>
                        <Grid.RowDefinitions>
                            <RowDefinition Height="auto" />
                            <RowDefinition Height="*" />
                        </Grid.RowDefinitions>

                        <GroupBox Header="Configureer hoofdstukken:" Margin="10" Padding="10">
                            <Grid>
                                ...     
                            </Grid>
                        </GroupBox>

                        <GroupBox Header="Voorpagina Afbeeldingen:" Margin="10,0,10,10" Padding="10" Grid.Column="0" Grid.Row="1" Grid.ColumnSpan="2">
                            <Grid VerticalAlignment="Top">
                                ...     
                            </Grid>
                        </GroupBox>

                        <GroupBox Header="Offerte Info:" Margin="10,10,10,10" Padding="10" Grid.Column="1" Grid.Row="0">
                            <Grid>
                                ...     
                            </Grid>
                        </GroupBox>

                        <GroupBox Margin="0,10,10,10" Header="Inhoudstafel:" Grid.Column="2" Grid.RowSpan="2">
                            <Grid>
                                <WebBrowser Margin="10" Name="wbInhoudstafel"/>
                            </Grid>
                        </GroupBox>
                    </Grid>
                </TabItem>

                <TabItem Header="1. Voorwoord" Name="tabVoorwoord">
                </TabItem>
                    ...         
                </TabItem>
            </TabControl>
        </ScrollViewer>

        <Menu DockPanel.Dock="Top" Name="TopMenu">
            ...     
        </Menu>

        <StatusBar Name="sbar" Grid.Row="2"
            ...     
        </StatusBar>
    </Grid>
</Window>

1 个答案:

答案 0 :(得分:2)

WPF WebBrowser控件基本上是旧的Win32 Webbrowser控件,在技术上呈现在WPF内容之上。此外,它在尺寸计算方面存在一些严重问题。

请参阅 http://msdn.microsoft.com/en-us/library/aa970688(v=vs.85).aspx

我担心没有办法告诉WebBrowser Control改变这种行为。

但是还有其他控制措施:

http://wpfchromium.codeplex.com/

http://awesomium.com/

修改:

在SO上找到了一个很好的总结,它指出了一些替代方案:

WPF WebBrowser (3.5 SP1) Always on top - other suggestion to display HTML in WPF