我有一个包含在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的样式,但没有任何乐趣。谁能看到我错在哪里?
答案 0 :(得分:1)
通过将包含列表框的行定义从Auto更改为*来解决此问题。自动将行扩展到列表框的大小,因此它将在屏幕外消失,永不滚动。
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>