I first thought there must be some problem with my data template, but when showing it from a WPF application everything worked just fine. My next instant thought was that there must be some message filter, in the Windows Forms application, stealing the keyboard input.
I then created a new Windows Forms application and brought up the modeless WPF Window from there, by calling Show, only to notice the same problem. I then changed to a modal window, by calling ShowDialog instead, and suddenly everything responded as it should.
It was time to start some Google:ing…
The solution, to my big surprise, was to explicitly enable keyboard input from Windows Forms, by calling the static method ElementHost.EnableModelessKeyboardInterop. This call takes a Window as parameter and essentially registers an input hook with the Windows Forms application object, running the message loop, and calls ComponentDispatcher.RaiseThreadMessage. The call to EnableModelessKeyboardInterop can be made in the constructor, if the Window is inherited, or simply before calling the Show method.
For more information read about Sharing Message Loops Between Win32 and WPF.
I now hope that they will merge these changes into DXCore 3.0+ also.
I was then informed by DevExpress that the new DXCore 3.0+ version was supposed to have special support for background thread analysis through the new code issue provider model. This, on the other hand, proved to be too much beta still since it didn’t behave as expected.
Right now I’m waiting for the DevExpress support team to analysis my code and the threading issues with DXCore 2.5+. The other alternative is to wait for a newer and more final version of DXCore 3.0+ and hopefully the background thread analysis will be good enough there, even though I’m rather skeptical about it right now.
The optimization release is therefore put on hold for now, so I might look into some other issues first. Right now I feel in need of a good vacation though and therefore I’m leaving for Florida on Friday. I can only hope that I’ll get back with a lot of new enthusiasm :)!!!
After that I will begin targeting Code Style Enforcer against the new version 3 of DXCore, in order to use some new nice features of that release. This means that DXCore version 3 will soon be a requirement instead of version 2.
I’ve now redesigned when and how the code rule violations are checked, by utilizing the DXCore Parse event together with asynchronous calls. I’m almost done with the optimization and hopefully we can try it out in our team in the upcoming week.
A new release can therefore be expected in early January, which will perform a lot better, but unfortunately won’t have a lot of new features, if any at all.
Happy New Year!!!