Hi there  
 I have a WPF application with an image where the user selects an area, once the area is selected a grid with crosses appears over the selected area.   
I apply some transformations back and forth in order to scale and rotate the grid to match the image coordinates.  

This is working so far, but when there is a lot of crosses (~+5k) the UI freezes and takes ages to render the crosses. I have applied some answers I found over Stackoverflow, like virtualization, `ListView`, `ListBox`, but I cannot make it work. I am wondering if someone can put some light here, thanks in advance!.  

EDIT  
So I end up doing all the related calculation to translate the crosses on the ViewModel, in order to do this and not break the MVVM pattern, I use AttachedProperties which gives me on the ViewModel the data needed for the calculation of the positions. Here is the link and the explanation -> <https://stackoverflow.com/a/3667609/2315752>   

Here is the main code:  

MainWindow.ItemControl:

```
<ItemsControl ItemsSource="{Binding Crosses}">
    <ItemsControl.ItemContainerStyle>
        <Style>
            <Setter Property="Canvas.Left"
                    Value="{Binding X}" />
            <Setter Property="Canvas.Top"
                    Value="{Binding Y}" />
        </Style>
    </ItemsControl.ItemContainerStyle>

    <ItemsControl.ItemsPanel>
        <ItemsPanelTemplate>
            <Canvas />
        </ItemsPanelTemplate>
    </ItemsControl.ItemsPanel>

    <ItemsControl.ItemTemplate>
        <DataTemplate>
            <Path Width="5"
                    Height="5"
                    StrokeThickness="1"
                    Stroke="1"
                    Style="{StaticResource ShapeCross}" />
        </DataTemplate>
    </ItemsControl.ItemTemplate>
</ItemsControl>

```