2012-04-30 84 views
2

我有一個用戶控件中包含的列表框。當設置爲水平方向時,它會按預期方式滾動,但當我將其更改爲垂直方向時,選中的項目會隨着按下鍵盤上的下鍵而進行更改,但沒有任何滾動,因此您將無法再看到選定的項目。它基本上只是從屏幕底部消失。WPF ScrollViewer不能縱向滾動

頁面佈局有一個帶邊框的網格,它不會脫離屏幕。 在這個電網是一個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> 
<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> 

我試過改變網格高度和刪除列表框的樣式,但沒有喜悅。任何人都可以看到我要去哪裏嗎?

回答

1

通過將包含列表框的行定義從Auto更改爲*來解決此問題。 Auto將該行擴展爲列表框的大小,因此它將在屏幕上消失並永不滾動。

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