スプリッタを使用して列の幅を変更できる2列レイアウトを作成しようとしています。ブラウザウィンドウのサイズを変更すると、右の列の幅が変わることはありません(グリッドの幅に比例してはいけません)。両方の列は最小幅を持つ必要があります。ブラウザのウィンドウが狭すぎて両方の列を表示できない場合は、スクロールバーが表示されます。Silverlight:予期せず動作するScrollViewer内のGridSplitter
これは私の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>
問題は、スプリッタを左にドラッグしたときで、左の列ののminWidthに達した - 右の欄には、非常に急速に成長し始め、スクロールバー表示されます。右の列から幅の設定を削除すると、奇妙な動作はなくなりましたが、ウィンドウのサイズが変更されたときに右の列が比例して拡大し始めます...
ドラッグしたときと同じ振る舞いをしたい右 - 私はそれがminwidthに達した後に停止したいと思います。
奇妙な動作...しかし、3番目の列の幅を100 *に設定すると、成長が止まりました。ところで、なぜScrollViewerの中にグリッドを置いたのですか? – NestorArturo
@NestorArturo - 幅を100 *に設定すると、3番目の列が比例します。これは必要な動作ではありません。ブラウザのウィンドウがグリッドの最小幅より狭くなると、水平スクロールバーが表示され、UIは引き続き使用できるように、スクロールビューア内にグリッドを配置します。 – boris
「*」を一切使用しないでテストしてください。 – NestorArturo