WPF GridSplitter使我的网格比我的窗口宽!
我有一个带GridSplitter的WPF网格。如果调整列的大小,则可以使网格比窗口宽,并且不可见。
故事是这样开始的:
WPF Grid http://img201.imageshack.us/img201/9505/onehg6.jpg
但在加宽左列后,我再也看不到右列(绿色):
WPF GridSplitter http://img201.imageshack.us/img201/1804/twomy6.jpg
我做错了什么?如何防止GridSplitter更改网格的大小?
更新:
我还在纠结这个问题。我已经试过在网格中嵌套网格了。没用。下面是我的XAML列定义、行定义和GridSplitters ...
<Window ... >
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" MinWidth="150" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" MinWidth="400" />
</Grid.ColumnDefinitions>
<GridSplitter
ResizeDirection="Columns"
ResizeBehavior="BasedOnAlignment"
Grid.Column="1"
HorizontalAlignment="Center"
VerticalAlignment="Stretch"
Width="2"
Margin="0,5,0,5"
Panel.ZIndex="1"/>
<Grid Grid.Column="0">
...
</Grid>
<Grid Grid.Column="2">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" MinWidth="150" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" MinWidth="200" />
</Grid.ColumnDefinitions>
<GridSplitter
ResizeDirection="Columns"
ResizeBehavior="PreviousAndNext"
Grid.Column="1"
HorizontalAlignment="Center"
VerticalAlignment="Stretch"
Width="2"
Margin="0,5,0,5"
Panel.ZIndex="1"/>
<Grid Grid.Column="0">
...
</Grid>
<Grid Grid.Column="2">
...
</Grid>
</Grid>
</Grid>
</Window>
更新:
我认为问题出在WebBrowser控件上。查看新问题:
WPF GridSplitter Doesn't Work With WebBrowser Control?
5条答案
按热度按时间7cjasjjr1#
尝试将“宽度”更改为星星大小(
Width="*"
)。这将导致拆分器只调整它所在列之间的大小,但我不确定这是否是您想要的行为。然而,使用星星大小,内容不会超出窗口的边界。
ebdffaop2#
如果调整
Window
的大小,使其Width
小于列的MinWidth
之和,您将看到列被截断,但除此之外,我无法重现您的问题:扩展红色列,它只会扩展到右列达到其
MinWidth
400,它不会 Boot 它离开页面。您可能正在设置
Window
或最外层Grid
的其他属性,这将导致此行为...w46czmvw3#
当拆分器之间没有带自动宽度的列时,它可以为我工作,无需任何额外的代码,即:
否则,栅格将可调整大小。
wkyowqbh4#
捕获DragDelta事件是另一种方法:
但是在
*
ColumnDefinition
上使用MinWidth
应该可以工作得很好。请注意,
ColumnDefinition
和MinWidth
需要位于顶层,如果嵌套在列中的某个网格中,则无法工作。n3h0vuf25#
我也遇到过这个问题,使用普通的
Grid
,没有特殊的控件,并且*
大小在两列/行上。问题是我在加载Window后以编程方式设置了网格中列/行的宽度和高度,因为我保存了拆分器位置,以便在下次程序运行时恢复它。
我将其改为计算
*
大小来解决问题。