web-dev-qa-db-ja.com

WPF:グリッド内のScrollViewer

私はグリッドを持っています:

<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行目をスクロールで表示したいのですが、アイテムコントロールが画面よりも大きい場合は、スクロールが表示されません。

必要なときにスクロールを表示するにはどうすればよいですか?

13
Shoki

編集:

'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>

グリッドを保持しているコンテナには明示的な高さがありますか?

4
Scott

MinHeightをMaxHeightに変更します。

2
RayLoveless