我一直struggling with the GridSplitter。它似乎与WPF 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>
重现问题的步骤......
如何防止GridSplitter更改网格的大小超出Window可以包含的范围?
有谁知道更多关于这个问题? ......或者有一个解决方法?
答案 0 :(得分:3)
我能够在ScrollViewer中使用Border重现这个(但不是没有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>
似乎在某些时候,星形尺寸会覆盖没有剩余空间的事实,所以当左列达到Width = 200时,GridSplitter已将右列的星形尺寸更改为3 *左右,无论是否有空格,该列都将为600。
答案 1 :(得分:1)
我知道你可能会听到这个,但是当我使用上面的XAML时,我无法重现你的问题,稍微修改为纯XAML:
( XAML code moved into question. )
您的代码隐藏中是否会出现导致该行为的内容?