This picture is the old one that had performance problems. The new one is not so impressive yet, but it’s performance is far better. I ended up doing the exact same from code as I did from XAML finding out that it was far faster and allowed me to do some smarter code. At the end of the day WPF (or should I say GPU) are capable of handling large tables, but you need to be aware that IO between CPU and GPU can be a bottleneck. So at 1000 entries it still started to get unacceptable slow. The solution is obvious – since I now coded the grid I could also focus on the visual parts only and update the grid as I scroll – basically creating a virtual grid to be able to handle large amounts of data.
The problem started as I added several properties to the grid and noticed that it became slow, so I added 1000 and was shocked about XAML performance. I am not confident that coding it in C# will be better then all details are added, but I can add smarter code. I only update those that are visual and text strings (as an example) I only display and create the editor as I need them – I also only create a single editor because I can only edit one field at the time anyway – the later is important for solving the huge memory leakage I detected.
The drawback is all the extra work I am forced to do, but this is engineering for you – sometimes you need to redo things because of unexpected challenges.
Looking at the examples above I also need to consider the end result – the embedded mini word processor is great, but it makes the property list long. The same with the attribute table expanded – and as each attribute have it’s own description with mini editor this really takes over the property list. The result all in all is very functional, but this is a very important part of the tool so we need to be critical and look for improvement options. One details is how I collapse a description – another is to avoid expanding multiple attributes unless I want to – I could also move tables and descriptions to separate pages – this is the upside og not using XAML as I can easier do more smart systems.