With this release, you can customize the Detail View's default layout in your Data Model code using the DetailViewLayout attribute. Please refer to the following example code/screenshot below:
public class Contact {
[Browsable(false)]
public int ID { get; private set; }
[DetailViewLayoutAttribute(LayoutColumnPosition.Left)]
public string FirstName { get; set; }
[DetailViewLayoutAttribute(LayoutColumnPosition.Right)]
public string LastName { get; set; }
[DetailViewLayoutAttribute("FullName", 0)]
public string FullName {
get { return FirstName + " " + LastName; }
}
[DetailViewLayoutAttribute(LayoutColumnPosition.Left)]
public string Email { get; set; }
[DetailViewLayoutAttribute(LayoutColumnPosition.Right)]
public virtual Contact Manager { get; set; }
[DetailViewLayoutAttribute(LayoutColumnPosition.Left)]
public DateTime? Birthday { get; set; }
[FieldSize(FieldSizeAttribute.Unlimited)]
[DetailViewLayoutAttribute("NotesAndRemarks", LayoutGroupType.TabbedGroup, 100)]
public string Notes { get; set; }
[FieldSize(FieldSizeAttribute.Unlimited)]
[DetailViewLayoutAttribute("NotesAndRemarks", LayoutGroupType.TabbedGroup, 100)]
public string Remarks { get; set; }
}

Non-Persistent Objects Enhancements
In this release we have extended support for usage scenarios when using non-persistent objects first introduced in v15.1:
- The New, Delete and Save Actions are available for non-persistent objects. Modified objects are accessible using the NonPersistentObjectSpace.ModifiedObjects property.
- The INotifyPropertyChanged.PropertyChanged event is now triggered for non-persistent objects.
- The non-persistent Object Space is now accessible for objects that support IObjectSpaceLink.
- Security permissions are immediately refreshed once the administrator applies changes. You are no longer required to log off all affected users to refresh permissions (learn more...).
- If the administrator grants certain permissions to a reference or collection property that participates in an association (one-to-many or many-to-many), the same permissions are automatically granted for a property at the other end of this association (learn more...).
- The Data View mode in now supported.
- Upcasting is now supported in List View columns.
You should expect more news in this regard after the official release.
General usability and API improvements:
The following is a list of minor features that should make using XAF a little easier. While you can see the full list of these smaller enhancements in our What's New docs, I would like to highlight the following items:
- S38140 - Core - Introduce IObjectSpace.Evaluate method that will evaluate a criteria expression against both EF and XPO objects (including Domain Components)
- Q483608 - Core - Make it easier to obtain IQueryable<T> collection through IObjectSpace for LINQ
- S171061 - Core - Provide an option to avoid saving a master record immediately when a new non-aggregated child object is created in a nested List View
- S170756 - Core - Provide Refresh method overloads allowing the refresh of the underlying data source
- T204296 - EF.Usability - Support complex types that are not registered in DbContext and have no key property
- T177760 - EFDataView - Support common criteria function operators
- S172038 - Core - Provide a simplified database compatibility check mode; one that relies on the database schema and ignores module assembly versions
- T312781 - ImagePropertyEditor - Support images declared as reference properties instead of byte array
- T303205 - Workflow - Add an option to repeat the workflow multiple times while the target object fits criteria
=====================================
I will post additional content on some of these items (like S172038) separatly, once we release v15.2. Please stay tuned and let us know what you think of these new features.
Free DevExpress Products – Get Your Copy Today
The following free DevExpress product offers remain available. Should you have any questions about the free offers below, please submit a ticket via the
DevExpress Support Center at your convenience. We’ll be happy to follow-up.