Project Description
The WPF Dynamic User Interface makes it easier for any WPF developer to create a Line Of Business Application.
You'll no longer have to develop User Interface when started using this project.
It is generating the fully working end user interface for your model.
The Wpf Dynamic User Interface is developed in .NET C# 4.0 and WPF.
Where can it be used?
The library can be used in business field applications where the business requirement must be implemented fast and efficiently.
The proven user interface generation can build thousands of views on the fly.
The total time of development process can be reduced as no need to maintain the user interface and the bindings.
Possible usage areas
- Prototyping WPF applications
- In-house business applications
- Line of business applications
- Educational projects
Why using WpfDynamicUI?
WpfDynamicUI was designed to reduce the total project development cycle time. [more]
How it is working
Key features:
- POCO model is supported
- Convention based model discovery.
- System.ComponentModel.DataAnnotation based fine tuning.
- General property types (string, datetime, int, etc) are supported.
publicclass CustomerModel : INotifyPropertyChanged { publicevent PropertyChangedEventHandler PropertyChanged; //propertiespublicstring Name { get; set; } publicint Age { get; set; } public DateTime BirthDate { get; set; } //save actionpublicvoid Save() { //save in the db } //save condition [Display(AutoGenerateField = false)] publicbool CanSave { get; set; } }
Extra features:
Deriving your class from Model opens the Workflow support
- Discover modules from other assemblies using MEF
- Built in workflow support.
- Nesting models are supported.
- Handles unlimited numbers of opened model in a chain.
- Defining a module entry point is trivial.
publicclass VisitModel : NavigationModel { //properties,etc excluded } publicclass OrderModel : NavigationModel { //properties, etc excluded [Display(AutoGenerateField = false)] public VisitModel VisitModel { get; set; } publicvoid SaveOrder() { //save order }//entry point for the modulepublicstaticvoid CreateOrder(VisitModel parentVisitModel) { BusinessApplication.Instance.CloseActiveModelAndNavigateTo(() => new OrderModel { VisitModel = parentVisitModel }); } }
Start using it
For more details and examples please see the project documentation.
For basic and extended usage consult the quick-start guides:
- Hello World quick-start guide
- Hello Workflow quick-start guide
- Hello Entity quick-start guide
The Wpf Dynamic UI is also available on nuget.
Roadmap
(future plans - V1.5)
- To be decided…
V1.2.0.105 - Current release (20120415)
Included functionalities
- Dynamic Code Builder. (Adding dynamic modules at runtime)
V1.2.0.103 - (20120413)
Included Fixes
- Ability to add Runtime assemblies to MEF container
- Fixed PagingExtensions page calculation when IQueryable is empty
V1.0.1.91 - (20120401)
Included providers
- WebBrowser control provider
V1.0.1.82 - (20120324)
First stable release
- Included WpfDynamicUI - Modeling
- Included WpfDynamicUI - Dynamic User Interface Control
Included functionalities
- Basic Discovery operations
- Nested Model discovery operations
- Work flow extensibility operations and definitions
- Filtering
- Trivial Menu building
- Trivial Application menu building
Included providers
- Standard .NET properties providers
- DataGrid, ComboBox IEnumerable control providers
- PagedIQueryable - paging control provider
- Map provider
- Chart provider
Included samples
- WpfDynamicUI - HelloWorld
- WpfDynamicUI - HelloWorkflow
Stable - stability:
WpfDynamicUI is involving. But you could be always be sure new involves ahead will not breaking your old code.
In terms of google we could say the application library is in Beta stage, but these application library parts if marked as released - stable - will be there for time.
There are still rooms for improvement:
- Sophisticated menu instead of trivial menu.
- Code Generation.
- And perhaps something even not identified at this time
They all will be an "extension" on the top the actual stack.
If you find this project useful feel free to provide a feedback.
Regards
Zoltán Csizmazia