8,752
社区成员
发帖
与我相关
我的任务
分享
自定义了一个listbox,容器是Canvas,listbox的item绘制在Canvas中,item的位置通过设置Canvas.Top和Canvas.Left来确定。但是数据多了之后(几百个item),在拖动地图或者缩放时,要重新计算item的位置,在后台算完坐标后,item的位置更新不及时,有的item即时更新位置了,有的item要慢一两拍才重绘到更新后的位置上。该怎么处理呢?
<controls:MyListView x:Name="MyDisplayControl"
ClipToBounds="True"
ItemContainerStyle="{StaticResource MyListViewItemStyle}"
VirtualizingStackPanel.IsVirtualizing="True"
VirtualizingStackPanel.VirtualizationMode="Recycling">
<controls:MyListView.ItemsPanel>
<ItemsPanelTemplate>
<Canvas />
</ItemsPanelTemplate>
</controls:MyListView.ItemsPanel>
</controls:MyListView>
<!--通过绑定的方式来更新Item的位置-->
<Setter Property="Canvas.Top" Value="{Binding Path=ViewPoint, Converter={StaticResource PositionConverter}, ConverterParameter=Y}" />
<Setter Property="Canvas.Left" Value="{Binding Path=ViewPoint, Converter={StaticResource PositionConverter}, ConverterParameter=X}" />