如何使用Canvas和ItemsControl WPF改进项目表示

时间:2016-07-20 12:00:10

标签: wpf canvas itemscontrol

嗨,我必须代表一堆元素(约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>

我的表现确实很糟糕,该应用程序似乎几乎冻结了.. 任何改善表现的想法????

0 个答案:

没有答案