WPF ScrollViewer不垂直滚动

时间:2012-04-30 15:43:57

标签: asp.net wpf

我有一个包含在usercontrol中的列表框。当设置为水平方向时,它会按预期滚动,但当我将其更改为垂直时,所选项目会在我按下键盘上的向下键时继续更改列表,但不会滚动任何内容,因此您将无法再看到所选项目。它基本上只是从屏幕底部消失。

页面布局有一个带有边框的网格,它不会离开屏幕。 在这个网格中是一个ContentControl

<Grid Grid.Column="1" Margin="0,30,30,30" Opacity=".7">
        <Border BorderBrush="#FFFFFFFF" BorderThickness="2,2,2,2" CornerRadius="4,4,4,4" >
            <Border.Effect>
                <BlurEffect KernelType="Gaussian" Radius="4"/>
            </Border.Effect>
        </Border>
        <Grid Background="Black">
            <ContentControl Content="{Binding SelectedSettingViewModel}" Focusable="False" />
        </Grid>
    </Grid>

在这个contentcontrol中是一个usercontrol。 在usercontrol里面是我遇到问题的列表框。

<UserControl>
<Grid >
    <Grid.RowDefinitions>
        <RowDefinition Height="Auto" />
        <RowDefinition Height="Auto" />
        <RowDefinition Height="Auto" />
        <RowDefinition Height="Auto" />
        <RowDefinition Height="Auto" />
    </Grid.RowDefinitions>
    <Controls:KNListBox Grid.Row="4" x:Name="SettingsListBox" KeyboardNavigation.DirectionalNavigation="Continue" ItemsSource="{Binding AutoCompleteDirectories}"
                            Style="{DynamicResource SettingsListBox}" SelectedItem="{Binding SelectedAutoCompleteDirectory, Mode=TwoWay}">
        <ListBox.ItemsPanel>
            <ItemsPanelTemplate>
                <StackPanel Orientation="Horizontal"></StackPanel>
            </ItemsPanelTemplate>
        </ListBox.ItemsPanel>
    </Controls:KNListBox>
</Grid>
</UserControl>

我尝试过更改网格高度并删除ListBox的样式,但没有任何乐趣。谁能看到我错在哪里?

1 个答案:

答案 0 :(得分:1)

通过将包含列表框的行定义从Auto更改为*来解决此问题。自动将行扩展到列表框的大小,因此它将在屏幕外消失,永不滚动。

<Grid.RowDefinitions> 
    <RowDefinition Height="Auto" /> 
    <RowDefinition Height="Auto" /> 
    <RowDefinition Height="Auto" /> 
    <RowDefinition Height="Auto" /> 
    <RowDefinition Height="*" /> 
</Grid.RowDefinitions>