Absolutely Awesome - and two small bits to contribute

Jun 20, 2015 at 4:42 PM
Mate, this is the most awesome datagrid I've seen, and I've downloaded everything I can find. The Commercial products suffer from a number of issues. They are bloated, have dependencies on an entire library of code you don't necessarily need or want, and are closed source so when there's a bug (and there will be) you can't fix it. Not to mention that the vendor makes you pay for the big library of dependencies that you don't need or want and also implements their own idea of MVVM making it difficult to hookup to your own idea of what that should look like. Sorry, I feel strongly about all that. The one little thing I would like to contribute, at this point is:

FastGridControl_Render.CS (partial class)
public static ImageHolder GetImage(string source)
            ++ bmImage.CreateOptions = BitmapCreateOptions.IgnoreColorProfile;
bmImage.UriSource = new Uri(packUri, UriKind.Absolute);

see this guy's blog: http://www.hanselman.com/blog/DealingWithImagesWithBadMetadataCorruptedColorProfilesInWPF.aspx

I ran into this specific issue using a collection of open source Icons I downloaded. I think they were for WinRT or Window Phone and every one of them had a corrupt ColorProfile. This fix resolved it.

The second item pertains to the pakURI. You may be using embeddedResources which is why using the assembly short name wasn't working for me, and you must also host the images in the Entry Assembly but in my case I have a plugin-module that's hosting the fastWpfGrid that is in a different assembly (it's loaded at run-time via Mef). I haven't quite figured out how to generically, get the assembly name of the module without using the IoC container (I don't want to introduce a dependency on that), so I crafted the following packUri instead and simply host the images in the fastWpf assembly.

-- string packUri = "pack://application:,,,/" + Assembly.GetEntryAssembly().GetName().Name + ";component/" + source.TrimStart('/');

++ string packUri = "pack://application:,,,/" + Assembly.GetExecutingAssembly().GetName().FullName + ";component/" + source + ".png";

Obviously the +".png" is optional depending on what type of image the developer is using but your assumption, and mine, is a png image based on the way your handling the bitmap loading.

Finally, I downloaded DBMouse to take a look at how you've implemented the grid and I have to say that is also a very impressive bit of software. I'll be studying DBShell in more depth. It appears that your commercial implementation of fastWpfGrid has a lot more functionality than the one you've posted here. What are you intentions? Do you have any additional code to contribute or do you feel this is a good baseline starting point for the community to begin contributing?

I will attempt to fork this and submit pull requests as I come up with stuff that I think is useful, I just wanted to make sure I'm not going to re-invent the wheel if you have more to offer us.

One last thing. CodePlex has been very unreliable lately. Have you considered moving to GitHub?

Kind Regards and thanks again, excellent work.

Aug 10, 2015 at 5:07 PM
thank you for the useful feedback

The first change You have suggested (IgnoreColorProfile) I have commited into GIT, it seems it is working OK. I had to manualy edit some icons to work in FastWpfGrid, this could aybe prevent it.
The second change doesn't work for me... Probably it requires adding all images into FastWpfGrid assembly, which from my point of view is more restrictive than adding them to main assembly.

DbMouse uses exactly this grid. There of course is lot of code extending this grid, but it is done in specific way - it uses Db-software-specific structures available only in DbMouse. Eg. virtual paging is implemented in model inherited from FastWpfGrid model.
This component should work only as presentation (rendering and input handling), my idea was to let application to make all neccessary logic

I have had ome ideas on implementing some specific models for FastWpfGrid (eg. working with DataTables), but probably I will not have time to do this. But it is open, so anyone could create this, if it is needed...

About GitHub... till now I haven't registered any problems with codeplex, but if some problems will occur, I will consider moving to GitHub
Thu at 4:35 AM
Time to move to GitHub... Codeplex is shutting down.