Hello,
I want to close the Panes, and not just Hide them (put them in the ClosedPanes collection).
There is no CloseAction property on Pane, so how can i accomplish that?
I want to release the memory as the dynamically created documents/toolwindows are closed.
Thank you in advance,
Michael
I have submitted a feature request directly to our product management team on your behalf to implement the Close Action in the Silverlight Version of the XamDockManager as is available in WPF. Our product team chooses new feature requests for development based on popular feedback from our customer base. Infragistics continues to monitor application development for all of our products, so as trends appear in requested features, we can plan accordingly.
We value your input, and our philosophy is to enhance our toolset based on customer feedback. If your feature is chosen for development, you will be notified at that time. Your reference number for this feature request is FR13305.
If you would like to follow up on your feature request at a later point, you may contact Developer Support management via email. Please include the reference number of your feature request in the subject and body of your email message. You can reach Developer Support management through the following email address: dsmanager@infragistics.com
Valerie
Hi Konstantin,
i had already implemented a reuse behavior of the closed panes, but i encountered the following problem.
1)I create a pane dynamicaly which is by default docked in the documents region.(I find/create a tabcontainerpane and add the pane to it's collection)
2)I docked it left in the xamdockmanager, and then i closed it.
3)I created another dynamic pane and i reused the previously closed pane. The pane should be shown again by default in the documents region.
4)I find/create a tabcontainerpane in the document regions and at the pane to it's collection.If OpenPane() method is not called, the ContainerPane won't show up.If i call the OpenPane() method it will show docked left (the before closed state of the Pane)
I would appreciate two quick fixes for both behaviors if applicable
I think that having common XAML codebase for WPF and SL , you should implement the CloseActionType property as WPF has... This will solve the above problems...
Regards,
Hi Michael,
do you really need to delete the closed panes? My point is that you could just set the panes Content to null in PaneClosed event so the memory of the content to be collected by the GC . Then the ContentPane object will resides in the ClosedPanes collection and eventually if you expect a lot of panes to be opened and closed you could reuse the already closed panes from the ClosedPanes collection.
This is just a suggestion. We could probably work to fix the workaround proposed by Nikola if you consider it more suitable.
Hello Nikola,
i handled the PaneClosing event, using the following snippet..
static void OnPaneClosing(object sender, CancellablePaneEventArgs e) { e.Cancel = true; if (_XamDockManager.Panes.Contains(e.Pane)) { _XamDockManager.Panes.Remove(e.Pane); return; } else if (e.Pane.OwnerPane is TabGroupPane) (e.Pane.OwnerPane as TabGroupPane).Panes.Remove(e.Pane as ContentPane); else if (e.Pane.OwnerPane is SplitPane) (e.Pane.OwnerPane as SplitPane).Panes.Remove(e.Pane); }
but i encounter the following issues...
1) When i close a ContentPane which is in a split container, The Pane becomes floating window
2) Ofcourse i cannot remove a pane from the ReadOnly FloatingPanes collection,
so the previous pane just does not close
3) The same applies for readonly UnpinnedPanes collection
Please give me a hint in order to overcome the mentioned limitations...
I hope that a CloseAction type will be available in the first SR of 2011.1
Hello redbyron,
There is PaneClosing event of XamDockManager, which you could use when trying to close Panes either inside XamDockManager Panes collection or inside DocumentContentHost - in your case when closing documents/toolwindows. If you don't want those Panes to go into ClosedPanes collection you could Cancel the event and then check if the current pane is inside XamDockManager or is inside DocumentContentHost. The logic might look something like the following code snippet :
private void Pane_Closing_Event_Handler(object sender, CancellablePaneEventArgs e) { e.Cancel = true; if(this.igXamDockManager.Panes.Contains(e.Pane)) { this.igXamDockManager.Panes.Remove(e.Pane); } if (this.igXamDockManager.DocumentContentHost.Panes.Contains(e.Pane.OwnerPane as TabGroupPane)) { TabGroupPane tgp = e.Pane.OwnerPane as TabGroupPane; tgp.Panes.Remove(e.Pane as ContentPane); } }
If you still have question please feel free to ask! Regards, Nikola.