我正在制作一个wp7 Silverlight应用。我有一个ScrollViewer
,其中包含十个元素的ListBox
。但是,它只能让我向下滚动一点点。我能做错什么?
<ScrollViewer>
<ListBox x:Name="StoryListBox"/>
</ScrollViewer>
ListBox
填充了以下类型的项目:
<Grid x:Name="LayoutRoot" Background="Transparent">
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Image x:Name="Thumbnail" Grid.Column="0" Width="89" HorizontalAlignment="Left" VerticalAlignment="Top" />
<TextBlock x:Name="Headline" Grid.Column="1" Grid.Row="0" Style="{StaticResource PhoneTextAccentStyle}" TextWrapping="Wrap" HorizontalAlignment="Left" Width="299" FontSize="23.333" VerticalAlignment="Top" />
<TextBlock x:Name="Teaser" Grid.Column="1" Grid.ColumnSpan="2" Grid.Row="1" HorizontalAlignment="Left" Style="{StaticResource PhoneTextSubtleStyle}" TextWrapping="Wrap" VerticalAlignment="Top" Width="384"/>
</Grid>
我在这里做错了什么?
答案 0 :(得分:2)
我没有看到你需要将ListBox嵌入ScrollViewer中的原因。如果ListBox的项目数多于它在可查看区域中显示的项目,则ListBox项目应自行滚动。如果使用Expression Blend编辑ListBox的样式,则样式将如下所示 -
<Style x:Key="ListBoxListStyle" TargetType="ListBox">
<Setter Property="Background" Value="Transparent"/>
<Setter Property="Foreground" Value="{StaticResource PhoneForegroundBrush}"/>
<Setter Property="ScrollViewer.HorizontalScrollBarVisibility" Value="Disabled"/>
<Setter Property="ScrollViewer.VerticalScrollBarVisibility" Value="Auto"/>
<Setter Property="BorderThickness" Value="0"/>
<Setter Property="BorderBrush" Value="Transparent"/>
<Setter Property="Padding" Value="0"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="ListBox">
<ScrollViewer
x:Name="ScrollViewer"
BorderBrush="{TemplateBinding BorderBrush}"
BorderThickness="{TemplateBinding BorderThickness}"
Background="{TemplateBinding Background}"
Foreground="{TemplateBinding Foreground}"
Padding="{TemplateBinding Padding}" >
<ItemsPresenter/>
</ScrollViewer>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
你可以看到嵌入在ListBox的ControlTemplate中的ScrollViewer,它负责滚动ListBoxItems。
答案 1 :(得分:1)
在我设置列表框的高度后,它(滚动)工作正常。
答案 2 :(得分:0)
当ScrollViewer小于它所包含的宽度或高度时,它只能工作。如果您没有指出ScrollViewer的宽度或高度,它将被拉伸以适应其内容,因此效果不会很完美。
因此,您需要为ScrollViewer设置固定大小。
顺便说一下,正如indyfromoz所说,ListBox已经有了一个ScrollViewer,所以你可以删除你的外部ScrollViewer,只需设置ListBox的大小。