【发布时间】:2010-08-06 22:59:38
【问题描述】:
我正在尝试创建一个相当大的文本块的滚动列表。我希望有一个垂直滚动条来显示它们,如果它们溢出一定的大小,我希望它们显示一个省略号。我实际上所有这些工作都很好。
我有以下 Silverlight XAML:
<Grid x:Name="LayoutRoot" MaxWidth="500" MinWidth="100"
MaxHeight="500" MinHeight="100">
<Grid.DataContext>
<app:MainPageViewModel/>
</Grid.DataContext>
<ScrollViewer>
<ItemsControl ItemsSource="{Binding TextItems}" Margin="0,20,0,20">
<ItemsControl.ItemTemplate><DataTemplate>
<Border MaxHeight="175" Margin="0,0,0,18" CornerRadius="5">
<TextBlock Margin="2" TextTrimming="WordEllipsis"
TextWrapping="Wrap" Text="{Binding}"/>
</Border>
</DataTemplate></ItemsControl.ItemTemplate>
</ItemsControl>
</ScrollViewer>
</Grid>
我的问题是这种布局不使用 UI 虚拟化,例如使用 VirtualizingStackPanel。所以它很慢。将 UI 虚拟化融入此布局的最佳方式是什么?我已经尝试了大约六种不同的方法,但没有一种效果很好。
我设法让它在 ListBox 中工作,因为它似乎支持开箱即用的虚拟化。但是,我更喜欢使用 ItemsControl,因为我不希望这些东西可以选择,也不希望 ListBox 附带的样式。
这在 Silverlight 4 中。
【问题讨论】:
标签: silverlight silverlight-4.0