2008-12-17 97 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