私はグリッドを持っています:
<Grid.RowDefinitions>
<RowDefinition Height="100"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
2行目はscrollviewerです。
<ScrollViewer VerticalScrollBarVisibility="Auto" MinHeight="400" Grid.Row="1">
<ItemsControl ItemsSource="{Binding SelectedUserControls}"/>
</ScrollViewer>
必要に応じて2行目をスクロールで表示したいのですが、アイテムコントロールが画面よりも大きい場合は、スクロールが表示されません。
必要なときにスクロールを表示するにはどうすればよいですか?
編集:
'MinHeight = 400'を削除してみてください、きっとうまくいくでしょう!!
ItemsControlのMinHeightは400です。したがって、400をすべて占めるのに十分なアイテムができるまで、スクロールバーは表示されません。グリッドを保持しているコンテナ(またはグリッドの明示的な高さが400未満)を推測しています。そのコンテナには大きすぎるアイテムがありますが、ItemsControlのMinHeightを満たすのに十分なアイテムがありません。
元の回答:30個のアイテム(MinHeightを満たすのに十分)を含むテストアプリを実行したところ、正常に機能しているようです。
<Window x:Class="TestApp11.MainWindow"
xmlns="http://schemas.Microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.Microsoft.com/winfx/2006/xaml"
xmlns:l="clr-namespace:TestApp11"
Title="Window1" Loaded="Window_Loaded" Height="600" Width="800">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="100"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<ScrollViewer VerticalScrollBarVisibility="Auto" MinHeight="400" Grid.Row="1">
<ItemsControl>
...
<ListBoxItem Content="Item 30" />
...
</ItemsControl>
</ScrollViewer>
</Grid>
</Window>
グリッドを保持しているコンテナには明示的な高さがありますか?
MinHeightをMaxHeightに変更します。