Can MDI layout do these things?

Docking/MDI for WPF Forum

Posted 3 years ago by Greg Carter
Version: 16.1.0632


Currently evaluating the Actipro wpf toolset, specifically the docking/mdi and property grid/editors.

The application is a plotting analysis tool for 2D and 3D plots.  We want the user to be able to arrange a number of plots on a "canvas" (not specifically wpf canvas).  The canvas needs to have a set size (8.5"x11", Legal, any size (posters)).  They need to be able to have more than one canvas (TabbedMdiHost).

My thinking was that the Actipro docking could be used with two dock sites, one nested in the other.  The outer docksite would contain the tabs for the individual "canvases" and the property/tool controls, so a TabbedMdiHost.  The inner would be a docksite with no tool just StandardMdiHost workspace.  Each window in the MDI space would be a plot.  Below is a screen shot of a prototype.  Although in the prototype we hand coded the property editors I see now that it could be implemented better using something like your property gird tool.

So my question is:

- Can the size of the MDI workspace be set to a specific size and can the DocumentWindow be restored to specific offsets within the MDI workspace?

Off topic, I'm looking to use the Catel MVVM framework, any known incompatibilities?



Comments (1)

Posted 3 years ago by Actipro Software Support - Cleveland, OH, USA

Hi Greg,

Thanks for evaluating our controls.  Based on your description and screenshot, I do think the functionality you referred to as the outer dock site would be an excellent use of our Docking/MDI product.  The properties and tool controls are perfect for embedding in our tool windows, and the tabbed MDI seems to be a great container for your canvases.

That being said, I'm not sure if standard MDI would work well for the plots on your canvas.  Standard MDI windows have Window-like chrome around them that allows them to move/resize, whereas you wouldn't want the chrome in your UI.  I would probably suggest that instead of having a nested inner dock site, you have a custom control for your canvas with a ScrollViewer around a fixed-size Canvas.  Allow it to use a WPF Canvas and you'd need to do some mouse tracking to know when the mouse is over a child plot control.  Then wire up some code that captures the mouse when the left button is down and allow the plot to be dragged around within the canvas by setting its Canvas.Left/Top attached properties during the drag.  Add some bounds tests to prevent the plots from going out of the Canvas size and you should be set.

As for Catel, we haven't used that framework.  But our MVVM design for Docking/MDI even works with pure MVVM designs (no third-party frameworks) so it should be compatible with any kind of MVVM-oriented framework.

Actipro Software Support

The latest build of this product (v2018.1 build 0675) was released 1 month ago, which was after the last post in this thread.

Add Comment

Please log in to a validated account to post comments.