Description:
It's nice how it can create a UI for you from classes, and I like how it does a windows and web app at the same time.
The concerns we have are how much can this can be customized. Our current application has some more complicated screens, like sales entry screens, inventory and we have many screens that drag/drop data from one grid to the other. Can these types of scenarios be handled in XAF or would XAF be used mostly for just maintenance screens (Customers, Products, etc)? Or, would you have to do some sort of mix and match of both XAF and normal non-XAF dialogs for more complicated screens?
Answer:
Before answering the main question I want to note that eXpressApp Framework is built using our DevExpress controls, and it demonstrates best practices on how to use our products in real world scenarios. That also means that regular XAF applications are actually regular .NET applications, and you can accomplish any task you can do in a regular application. Since we are building a framework that will allow developers to easily create multi-platform business applications that correspond to common business scenarios, we are trying to do this in general fashion, i.e. we are searching for solutions that will well work today in Windows Forms and Web Forms applications, as well as in WPF and Silverlight applications tomorrow. This explains why we have created such cross-platform entities like Window, Frame, Template, Controller, ListView, DetailView, Action, CollectionSource, ListEditor, PropertyEditor, DetailViewItem, etc. Using this concept we provide universal methods to work with real controls. Actually, all these abstracts are wrappers on real controls. For instance, in the Web the View.Control property accessed from a controller for a list view, might be the ASPxGridView, when in a Windows Forms application it will be the GridControl. Note, that XAF's universals usually expose a reference to a real control, so you can easily access it and then cast to the required type. For instance, as demonstrated here: Access Grid Control Properties. There are a lot of other samples in the documentation and Support Center world.
Keeping in mind all what I said above, I wanted to not that there is almost no difference in developing a regular non-XAF application using the form designers as usual, and XAF development. If you want to catch real controls, just catch and customize them as needed. When doing this, also note that XAF generates the default UI itself by its own rules, and you need to follow these rules to effectively work with XAF. For instance, you can perform the most of specific functionality via Controllers. This is a universal mechanism to do additional things in XAF (remember the Model-view-controller pattern). Another way to customize your application is Application Model. This is one more universal feature in XAF. Using these main features, you can fully customize any part of UI generated by XAF by default.
In addition, I suggest you check the following links in the XAF documentation to learn more about ways to provide specific UI customizations:
UI Construction
UI Customization
Task-Based Help
If you have some specific requirements that are not covered in our documentation, you can always contact our Support Team and ask us whether it is possible to meet your requirements in XAF. Note that it is better to provide us with screenshots, for instance from your legacy application, that you are planning to rewrite with XAF, or a detailed explanation of what you are looking for, because in this instance we can better understand your problem and help you faster. It would be also valuable if you can create separate issues for each problem. Since XAF is designed to meet the needs of many, and it works by its own rules, some scenarios cannot be supported out-of-the-box, and implementing them in the current version of the suite will require significant effort and resources. In this instance, you can create a suggestion to see a particular feature in future versions of XAF, if it's popular with other XAF users.
See Also:
eXpressApp Framework > Getting Started
Concepts > UI Construction > Using a Custom Control that is not Integrated by Default
Disclaimer: The information provided on DevExpress.com and affiliated web properties (including the DevExpress Support Center) is provided "as is" without warranty of any kind. Developer Express Inc disclaims all warranties, either express or implied, including the warranties of merchantability and fitness for a particular purpose. Please refer to the DevExpress.com Website Terms of Use for more information in this regard.
Confidential Information: Developer Express Inc does not wish to receive, will not act to procure, nor will it solicit, confidential or proprietary materials and information from you through the DevExpress Support Center or its web properties. Any and all materials or information divulged during chats, email communications, online discussions, Support Center tickets, or made available to Developer Express Inc in any manner will be deemed NOT to be confidential by Developer Express Inc. Please refer to the DevExpress.com Website Terms of Use for more information in this regard.