2

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

页面布局有一个网格,其周围有一个不会离开屏幕的边框。在这个网格中有一个 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>

在这个内容控件中是一个用户控件。用户控件内部是我遇到问题的列表框。

<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 的样式,但没有任何乐趣。谁能看到我哪里出错了?

4

1 回答 1

1

通过将包含列表框的行定义从 Auto 更改为 *. 自动将该行扩展到列表框的大小,因此它会从屏幕上消失并且永远不会滚动。

<Grid.RowDefinitions> 
    <RowDefinition Height="Auto" /> 
    <RowDefinition Height="Auto" /> 
    <RowDefinition Height="Auto" /> 
    <RowDefinition Height="Auto" /> 
    <RowDefinition Height="*" /> 
</Grid.RowDefinitions> 
于 2012-05-02T17:03:43.840 回答