嗨,我必须代表一堆元素(约1000)。这些元素都有这样的公共属性。
public Point DeviceImagePosition
{
get
{
return deviceImagePosition;
}
set
{
if (value != deviceImagePosition)
{
deviceImagePosition = value;
OnPropertyChanged(PROPERTY_NAME_DEVICE_IMAGE_POSITION);
}
}
}
此属性每秒更新一次。我正在使用一个任务来计算新的项目位置,使其脱离UI线程。在UIThread上我只将新Point设置为DeviceImagePosition。
我正在使用的ItemsControl是这样的。
<ItemsControl ItemsSource="{Binding TrackRendererList}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<Canvas />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemContainerStyle>
<Style TargetType="ContentPresenter">
<Setter Property="Canvas.Left" Value="{Binding Path=DeviceImagePosition.X}"/>
<Setter Property="Canvas.Top" Value="{Binding Path=DeviceImagePosition.Y}" />
</Style>
</ItemsControl.ItemContainerStyle>
<ItemsControl.ItemTemplate>
<DataTemplate>
<Ellipse Height="10" Width="10" Canvas.Left="-5" Canvas.Top="-5"
Stroke="Red" Fill="Red"
StrokeThickness="1"
Opacity="0.5">
</Ellipse>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
我的表现确实很糟糕,该应用程序似乎几乎冻结了.. 任何改善表现的想法????