【发布时间】:2012-03-02 19:33:07
【问题描述】:
我正在尝试构建一个两列布局,其中列的宽度可以通过使用拆分器来更改。调整浏览器窗口大小时,右列的宽度不应改变(它不应与网格宽度成比例)。两列都应具有最小宽度。当浏览器窗口太窄而无法显示两列时,应该会出现滚动条。
这是我的 XAML:
<Grid x:Name="LayoutRoot" Background="White">
<ScrollViewer HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Disabled">
<Grid Height="200" Margin="0,0,0,0" MinWidth="400" VerticalAlignment="Top">
<Grid.ColumnDefinitions>
<ColumnDefinition MinWidth="300" Width="300*" />
<ColumnDefinition Width="10" />
<ColumnDefinition MinWidth="100" Width="100"/>
</Grid.ColumnDefinitions>
<Grid Grid.Column="0" Background="Red" x:Name="LeftColumn"></Grid>
<sdk:GridSplitter Grid.Column="1" HorizontalAlignment="Center" Width="10" Background="Black" />
<Grid Grid.Column="2" Background="Green" x:Name="RightColumn"></Grid>
</Grid>
</ScrollViewer>
</Grid>
我遇到的问题是当拆分器被拖到左边并且达到左列的最小宽度时 - 右列开始非常迅速地增长并且出现滚动条。从右列中删除宽度设置消除了奇怪的行为,但现在右列在调整窗口大小时开始按比例增长......
我希望拆分器的行为与向右拖动时相同 - 我希望它在达到最小宽度后停止。
【问题讨论】:
-
奇怪的行为......但是,当将第三列的宽度设置为 100* 时,它停止了增长。顺便问一下,¿你为什么把 Grid 放在 ScrollViewer 里面?
-
@NestorArturo - 将宽度设置为 100* 使第三列成比例,这不是我需要的行为。我在滚动查看器中放置了一个网格,这样当浏览器窗口的大小调整为小于网格的最小宽度时 - 会显示一个水平滚动条并且 UI 仍然可用。
-
@NestorArturo - 定义不带“*”的列宽会阻止网格拉伸到屏幕的可用宽度。我希望网格占据所有可用的水平空间。
标签: silverlight scrollviewer gridsplitter