2008-12-17 98 views
1

我一直在struggling with the GridSplitter。它似乎与WPF WebBrowser控件不兼容。WPF GridSplitter不适用于WebBrowser控件?

如果我调整窗口大小并移动GridSplitter,那么我可以使我的网格比我的窗口更宽并且不可见。

前:

WPF GridSplitter WebBrowser Before http://img239.imageshack.us/img239/4061/grid1vn8.gif

后(注意:滚动条)

WPF GridSplitter WebBrowser After http://img101.imageshack.us/img101/4303/grid2so0.gif

我的XAML ...

<Window xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     MinWidth="450" 
     Width="450" 
     Height="300" 
     Title="Window3"> 
    <Grid> 
     <Grid.ColumnDefinitions> 
      <ColumnDefinition MinWidth="200" Width="*"/> 
      <ColumnDefinition Width="Auto"/> 
      <ColumnDefinition MinWidth="200" Width="*"/> 
     </Grid.ColumnDefinitions> 
     <Button Name="Button2" 
       Grid.Column="0" 
       Margin="5" 
       Content="Button2"/> 
     <GridSplitter 
      Width="2" 
      Grid.Column="1" 
      HorizontalAlignment="Center" 
      Margin="5" 
      Panel.ZIndex="1" 
      VerticalAlignment="Stretch" 
      ResizeBehavior="PreviousAndNext" 
      ResizeDirection="Columns"/> 
     <WebBrowser 
      Grid.Column="2" 
      Margin="5" 
      Source="http://www.google.com"/> 
    </Grid> 
</Window> 

步骤来重现问题...

  1. 拖动窗口的右侧边缘大约一倍的宽度
  2. 拖动右边的分路器到最左,它会去
  3. 拖动窗口的右边缘向左尽可能”我会去的。

我该如何让GridSplitter不会改变我的Grid的大小超出Window可以包含的大小?

有没有人知道更多关于这个问题? ...或有解决方法?

回答

3

我能够用ScrollViewer中的边框(但不是没有ScrollViewer)重现这一点,所以我的猜测是滚动会以某种方式混淆它。

左边栏设置一个MaxWidth(应该没有任何实际作用非常大MaxWidth)似乎解决它:

<Window xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     Height="300" 
     MinWidth="450" 
     Width="450" 
     Title="Window3"> 
    <Grid> 
     <Grid.ColumnDefinitions> 
      <ColumnDefinition MinWidth="200" Width="*" MaxWidth="10000"/> 
      <ColumnDefinition Width="Auto"/> 
      <ColumnDefinition MinWidth="200" Width="*"/> 
     </Grid.ColumnDefinitions> 
     <Button 
      Name="Button2" 
      Grid.Column="0" 
      Margin="5" 
      Content="Button2"/> 
     <GridSplitter 
      Width="2" 
      Grid.Column="1" 
      HorizontalAlignment="Center" 
      Margin="5" 
      Panel.ZIndex="1" 
      VerticalAlignment="Stretch" 
      ResizeBehavior="PreviousAndNext" 
      ResizeDirection="Columns"/> 
     <WebBrowser Grid.Column="2" Margin="5" Source="http://www.google.com"/> 
    </Grid> 
</Window> 

看来,在某些时候,明星上浆覆盖的事实,有没有剩余空间,所以当左列达到宽度= 200,并且GridSplitter已将右列的星形大小更改为3 *左右时,该列将为600是否有空格。

1

我知道你可能生病听到这话的,但是当我使用了XAML以上,稍加修改可以是纯XAML我无法重现你的问题:

(XAML code moved into question.)

难道还有什么东西在你的代码隐藏导致行为?

+0

谢谢。但是,使用XAML和空白xaml.vb文件时,问题仍然存在。 – 2008-12-17 22:23:06