为什么WebBrowser与其他控件重叠?

时间:2013-03-19 16:09:22

标签: c# wpf wpf-controls

我目前正在使用WPF和C#以及XAML开展项目,我想出了这个问题:

我创建了一个新列(之前只有2个),并添加了TabControl,TabItem和Stack Panel,使其与其他列类似。但是,当我调整它的大小时,它会与另一列重叠,即使最小宽度设置为0(或1)。

   <TabControl Name="tabSideBarHelp" Grid.Column="1" Grid.Row="0" Grid.RowSpan="4" Margin="8,4,4,4" Padding="4" MinWidth="100">
            <TabItem Header="Help">
                <StackPanel>
                    <WebBrowser Grid.Row="3" Height="93" HorizontalAlignment="Left" Name="webBrowser1" VerticalAlignment="Top" MinWidth="1" Grid.Column="1"/>
                </StackPanel>
            </TabItem>

This is the WebBrowser overlapping

2 个答案:

答案 0 :(得分:3)

这与WebBrowser的工作方式有关,也会影响WindowsFormsHost控件。基本上,WebBrowser不参与WPF通常的渲染流程,因此它不会像WPF控件一样被合成到WPF窗口中。相反,它会在它占据的任何区域中的所有其他区域之后被绘制,从而重叠应该出现在WebBrowser控件之上的任何WPF控件。

不幸的是,这意味着你必须非常小心,不要让WebBrowser控件重叠,因为你会遇到这种渲染问题。

答案 1 :(得分:1)

首先,设置min-width不会阻止你的ui元素在指定的最小宽度上面。也许你想设置最大宽度。

其次,Web浏览器是一个IE框架,而不是一个wpf原生控件,所以期待它的怪异行为