The latest release has some UI fixes for TrueView, and mapping fixes for DataBridge. Download it here.
TrueView Fixes
- UI now shows changes if entities are modified inside constructors
- Corrected treenode selection when removing a previously selected node
- Fixed race condition when opening Entity property nodes
- Entity Property treenode no longer renders with the Entity’s style
- Fixed window layout for magnetic windows
- Fixed window positioning when overlaying windows
- Correctly identifies the top-most window in multi-monitor mode
- Exceptions when retrieving Summary value are no longer fatal
- Fixed Search Results window ownership in MyApplication.Load<T>(query, parameters)
- Shortcut key presses are now handled for multi-monitor mode
Enhancements
- ‘Short’ values now have smaller widgets (Strings)
- Improved ‘Version Check’ dialog messages
DataBridge Fixes
- Corrected writing of Component properties
- Fixed Foreign Key names for Entity properties of the same type
The latest release includes 2 very useful UI features:
Multi-monitor support
This option is specially useful when you’re demoing to others, and can be enabled from Tools->Options->UI Settings->Allow MultiMonitor Use. All subsequent windows will open outside of the Workbench, allowing them to be dragged to other monitors.
Popup Search Dialogs
Although drag & drop is very powerful, not all users are comfortable with it, instead preferring to select items from a list. With this is mind, a new context menu item was added:

Selecting this will open a Search Dialog, where the user can query and select an Entity. It also works for EntityList properties (multiple Entities can be selected in this case):

It’s also possible to pre-load the popup search dialog using Query Specifications. See the section “Pre-filtered Search Query Dialogs” in the user guide to learn more.
This release has some major UI rendering improvements, and a couple of enhancements to aid usability. TrueView DataBridge also has a couple of small fixes. Download them here
Enhancements:
- Drag/drop tip now explains the drop action
- Drag/drop tip now tries to stay on-screen, regardless of curson position
- Now allows new entities to be added to unsaved parent entities
- “Save This” tooltip now shows reason for being disabled (where applicable)
- Removed duplicate results in Search window
- Friendly names are now generated for generic lists
- Improved icons bitmap scaling quality
- Removed error messages when using IQuerySpecification with FilePersistence provider class
Fixes:
- UI refresh now updates all Entities
- Fixed stack overflow when tracking dirty entities in circular object graphs
- Corrected tracking of entities that are removed from lists
- Dynamic listbox ensures that property value is automatically loaded
- Fixed NullReferenceException when pressing Enter in an empty Queries List
- Fixed DataTimePicker background colour on Windows Vista
- Removed system beeps when entering/exiting edit controls (NumericUpDown is still a problem)
- Correct sizing of PropertyGrid columns
- Corrected enabled state for “Save This” menu item
- Corrected bold text clipping in Search treeview
- Allow NHibernate to use reflection-optimizer if configured to do so
- Menu and toolbar items are now updated if Undo/Redo fails
- Better alignment of Boolean radio-buttons
- Better sizing of bitwise(flag) enum listbox
- String compacting algorithm no longer creates null-terminated strings
Optimisations:
- Massive improvements to UI rendering performance
- Reduced startup time in MyApplication.Initialise (i.e. for unit testing)
- FilePersistence now flushes to disk less frequently
- Improved string building performance
Known issues:
- NumericUpDown editor still beeps when Enter is pressed
- Search Query Editor window doesn’t hide Boolean editors immediately (need to hit Escape twice)
Casey Charlton is writing a sample application using DDD. His first step was to create a UI mock-up to reflect a user story
“What’s so bad about that?” I hear you cry. Well, here’s the problem:
UI prototyping is great for defining how a person is going to solve a business problem. It’s not great at defining what the problem actually is (i.e. the business domain).
I’ve seen this happen many, many times:
- Developer sketches UI, to start discussions with the Domain Expert/Business Analyst
- Business Analyst adds/removes/repositions some widgets
- ‘Hand waving’ and ‘pointing at imaginary boxes’ becomes the communication technique of choice
- Developer agrees to ‘quickly code up’ an interactive prototype
- End user wants a different shade of blue
Although the Developer has good intentions of leveraging DDD, the urge to see working apps overrides everything else – leaving the Developer with a vague understanding of the business domain.
As the Developer does learn more about the domain, he usually finds that the original UI design is inadequate. And changing a UI is expensive (it’s a pity that most businesses don’t understand why).
This is where TrueView shines. It automatically creates interactive UIs, but only based on domain definitions and relationships. Which means:
- The Business Analyst must describe the business domain.
- The Developer must start understanding the domain
- Both must define and share the Ubiquitous Language.
TrueView doesn’t give you a totally customisable UI, but you do get an interactive prototype that models the business. Once you understand the domain model, you’re in a perfect position to design a slick UI.