NOTE: This release is the one used to write the demo F# WPF-CPS application here:Address Book DemoAddress Book Demo Source Code
In this mini, point-release, I have made a handful of tiny but important fixes and enhancements:
For the sake of the DataGrid, I have changed the RemoveAll method to remove Composites in reverse, from the bottom up. Currently, for the DataGrid, I take the approach of removing all and re-adding all whenever sorting or filtering. This may be inefficient but is likely good enough for the time being? Large datasets could likely be managed via old-school pagination (previous 100, next 100 buttons, etc.)
For the modal dialogs, I have added a check for IsCompositeOnParent before displaying a dialog. This allows you to tie all dialogs to a single guid key that can be checked to prevent displaying a modal dialog if one is already on the Canvas.
Moreover, in addition to ShowOKDialog, I have now added:
ShowCustomFormDialog - to insert labels and textboxes into the dialog
ShowYesNoCancelDialog - to display Yes and No buttons instead of OK
I also cleaned up a few memory leaks and added support for ESC to cancel (i.e. close) the dialog and for Enter to click OK or YES.
For accelerator keys, if adding an underscore "_" to the content of the control fails to work, such as:
FasterWPF.Factory.BeginMenuComposite(145D, 20D, "_Edit Alt-E" . . .
I now have a backup, alternative approach available via the new method:
This method returns a System.Windows.Input.Key that you can check against, e.g. if GetKeyPressedInCombinatinWithAltKey(eventArgs1)==Key.E
Lastly, I added helpful summary comments to the RemoveAll and RemoveByKey methods, encouraging developers to call DisposeEventsOnAllParents prior to calling these (to prevent memory leaks.) DisposeEventsOnAllParents allows you to unsubscribe events recursively down thru all children, including children who are themselves parents.
As a reminder, the code lives in two separate projects. There is a core FasterWPF.dll with the minimal required functionality. This can run with only the Aero.dll and the Rx .dll's. Then, there is a FasterWPFExtras .dll that requires and supports the Extended WPF Toolkit™ Community Edition V 1.9.0 (including Xceed DataGrid) and the Thriple .dll. This is for developers who want more . . .
Finally, you may notice the other OPTIONAL .dll's available in the download such as the Dynamic .dll (which is for if you are using IronPython) and DataVisualization/WindowsFormsHost .dll's for if you want to add robust charting support (be careful of potential memory leaks with WindowsFormsHost.)
Please note that the Reactive Framework (Rx) .dll's are somewhat old. The Rx .dll's I am currently using are Version 2.0.21103.1
Please let me know if you run into any major bugs or limitations? Also, feel free to pitch in and to add any extensions. If I have the time, I may write a small book on WPF Composites walking thru yet another demo application to add on to what is posted here . . .
Bryan Prendergast 11/3/2013