I have an application where I am using the xamDock manager that takes up the whole screen but I would like the orientation as follows.
Top of the screen
---------------
Pane 1 (takes up width of the whole screen)
----------------
Pane 2 (half of the width screen) | Pane 3 (half of the width screen)
-----------------
Pane 4 (takes up width of the whole screen)
------------------
Pane 5 (half of the width screen) | Pane 6 (half of the width screen)
--------------------
Bottom of the screen
Is this achievable? Initial location only seems to respond to DockedBottom, DockedRight, DockedLeft, and DockedTop. How would I express "Docked BottomRight" for example, please?
Hello Christian,
Do you have any other questions on this matter?
Sincerely,Valerie Developer Support Supervisor - XAMLInfragisticswww.infragistics.com/support
RegionManager is the name of a class and Get/SetRegionManager are static methods on this class. These methods are what you use to get/assign IRegionManagers to DependencyObjects like controls. Sorry for the confusion.
In Valerie's sample, the Shell.xaml file is where the XamDockManager is defined so this is where I handled the ToolWindowLoaded event. From here I could get the IRegionManager object that is attached to the shell and assign it to the floating window. The important thing here is grabbing the main IRegionManager where your region names are kept and assign it to the floating window. If the floating window doesn't have this manager, any region names defined inside the window won't be useable in your module.
I attached a modified version of Valerie's sample which loads a module view into the floating window.
I'm not sure where ToolWindowLoaded event needs to be handled, maybe you could illustrate using Valerie's sample?
My Shell calls a module, module calls mainViewModel, and mainViewModel calls various other viewmodels, one of which I want to be a floating panel.
Does the ToolWindowLoaded need to be handled in the Shell, mainViewModel, or childViewModel?
Also, I have IRegionManager on the childViewModel, not RegionManager, so SetRegionManager and GetRegionManager were not availible (briefly commented it out and replaced it with RegionManager instead of IRegionManager, not sure if it will have an averse affect on the code).
I think the issue is because the floating pane is in a seperate window and does not have a RegionManager. I tested this using Valerie's sample and was able to reproduce the error. To resolve this you will need to handle the ToolWindowLoaded event and then inside this event, assign the RegionManager for the window to the same one used by the shell.
private void XamDockManager_ToolWindowLoaded(object sender, Infragistics.Windows.DockManager.Events.PaneToolWindowEventArgs e) { // 'this' assumes that the XamDockManager is inside the shell xaml RegionManager.SetRegionManager(e.Window, RegionManager.GetRegionManager(this)); }
One thing you should be aware of is that when you create a floating SplitPane that contains an empty TabGroupPane, the floating window is not shown.
I think I understand what you are saying. So I changed my xaml to this:
<igWPF:XamDockManager x:Name="DockManager" >
<igWPF:XamDockManager.Content>
...
</igWPF:XamDockManager.Content>
<igWPF:XamDockManager.Panes>
<igWPF:SplitPane igWPF:XamDockManager.InitialLocation="DockedTop" SplitterOrientation="Vertical" Height="Auto" AllowDrop="False">
<im:InstrumentSummaryView />
<igWPF:TabGroupPane x:Name="bottomDock" prism:RegionManager.RegionName="{x:Static inf:KnownRegionNames.DockedBottom}" />
<igWPF:TabGroupPane x:Name="fee" prism:RegionManager.RegionName="{x:Static inf:KnownRegionNames.Fee}"/>
</igWPF:SplitPane>
<igWPF:SplitPane igWPF:XamDockManager.InitialLocation="DockedRight" SplitterOrientation="Vertical" AllowDrop="True">
<igWPF:TabGroupPane x:Name="rightDock" prism:RegionManager.RegionName="{x:Static inf:KnownRegionNames.DockedRight}" />
<igWPF:SplitPane igWPF:XamDockManager.InitialLocation="DockableFloating">
<igWPF:TabGroupPane x:Name="securityBlotterPane" prism:RegionManager.RegionName="{x:Static inf:KnownRegionNames.SecurityBlotter}"/>
</igWPF:XamDockManager.Panes>
</igWPF:XamDockManager>
And my viewmodel is like this:
private
void OpenSecurityBlotter()
{
var view = _container.Resolve<SecurityBlotterView>();
view.DataContext = _container.Resolve<SecurityBlotterViewModel>();
var region = RegionManager.Regions[KnownRegionNames.SecurityBlotter]; //<-- Throws Error "The region manager does not contain the SecurityBlotter region."
region.Add(view);
region.Activate(view);
}
Any idea why i'm getting that error on the open command "The region manager does not contain the SecurityBlotter region" ?
Mind you, if I execute any other open command in a similar fashion, for instance:
private void OpenFeeRebate()
var region = RegionManager.Regions[KnownRegionNames.Fee];
var view = _container.Resolve<FeeView>();
view.DataContext = _container.Resolve<FeeViewModel>();
region.Add(view);//add the view
region.Activate(view); //active the view
opening any other non floating panel works fine.
Is it because my floating panel has a TabGroupPane inside of the split pane instead of a ContentPane or...?