Hi ,
1. When two or more pane in one group and they are floating,you click the "x" to close a pane, all the panes in the group will disappear. I just want to close the current one.
2. Upinned a pane, hover over it to expand the pane,then click the "x" to close the pane.The pane is still there,until you pined it, it will disappear.
I handled the PreviewClose event, and will execute close in this event. My code is below.
please help me!
RadControls for Silverlight Q2 2010 SP2
Microsoft Silverlight Version: 4.0.50917.0
Microsoft Visual Studio 2010 Version 10.0.30319.1 RTMRel
Microsoft .NET Framework Version 4.0.30319 RTMRel
xaml code
c# code
1. When two or more pane in one group and they are floating,you click the "x" to close a pane, all the panes in the group will disappear. I just want to close the current one.
2. Upinned a pane, hover over it to expand the pane,then click the "x" to close the pane.The pane is still there,until you pined it, it will disappear.
I handled the PreviewClose event, and will execute close in this event. My code is below.
please help me!
RadControls for Silverlight Q2 2010 SP2
Microsoft Silverlight Version: 4.0.50917.0
Microsoft Visual Studio 2010 Version 10.0.30319.1 RTMRel
Microsoft .NET Framework Version 4.0.30319 RTMRel
xaml code
<
UserControl
x:Class
=
"DockingPane.MainPage"
xmlns:telerik
=
"http://schemas.telerik.com/2008/xaml/presentation"
mc:Ignorable
=
"d"
d:DesignHeight
=
"300"
d:DesignWidth
=
"400"
>
<
Grid
x:Name
=
"LayoutRoot"
Background
=
"White"
>
<
telerik:RadDocking
x:Name
=
"DockingControl"
PreviewClose
=
"OnPreClose"
>
<
telerik:RadSplitContainer
>
<
telerik:RadPaneGroup
>
<
telerik:RadPane
Header
=
"Description"
>
<
TextBlock
TextWrapping
=
"Wrap"
Text
=
"On the Documents tab above press Ctrl + Mouse Left button to display the Popup Menu. You can use the same combination on every tab."
/>
</
telerik:RadPane
>
</
telerik:RadPaneGroup
>
</
telerik:RadSplitContainer
>
<
telerik:RadSplitContainer
InitialPosition
=
"DockedLeft"
>
<
telerik:RadPaneGroup
>
<
telerik:RadPane
Header
=
"Toolbox"
/>
</
telerik:RadPaneGroup
>
</
telerik:RadSplitContainer
>
<
telerik:RadSplitContainer
InitialPosition
=
"DockedLeft"
>
<
telerik:RadPaneGroup
>
<
telerik:RadPane
Header
=
"Toolbox"
/>
</
telerik:RadPaneGroup
>
</
telerik:RadSplitContainer
>
<
telerik:RadSplitContainer
InitialPosition
=
"DockedLeft"
>
<
telerik:RadPaneGroup
>
<
telerik:RadPane
Header
=
"Toolbox"
/>
</
telerik:RadPaneGroup
>
</
telerik:RadSplitContainer
>
<
telerik:RadSplitContainer
InitialPosition
=
"DockedLeft"
>
<
telerik:RadPaneGroup
>
<
telerik:RadPane
Header
=
"Toolbox"
/>
</
telerik:RadPaneGroup
>
</
telerik:RadSplitContainer
>
<
telerik:RadSplitContainer
InitialPosition
=
"DockedRight"
>
<
telerik:RadPaneGroup
>
<
telerik:RadPane
Header
=
"Properties"
/>
<
telerik:RadPane
Header
=
"Solution Explorer"
/>
</
telerik:RadPaneGroup
>
</
telerik:RadSplitContainer
>
</
telerik:RadDocking
>
</
Grid
>
</
UserControl
>
c# code
using
System.Collections.Generic;
using
System.Windows;
using
System.Windows.Controls;
using
Telerik.Windows.Controls;
using
Telerik.Windows.Controls.Docking;
namespace
DockingPane
{
public
partial
class
MainPage : UserControl
{
public
MainPage()
{
InitializeComponent();
}
private
void
OnPreClose(
object
sender, Telerik.Windows.Controls.Docking.StateChangeEventArgs e)
{
e.Handled =
true
;
IEnumerator<RadPane> ie = e.Panes.GetEnumerator();
ie.MoveNext();
RadPane pane = ie.Current;
RadPaneGroup paneGroup = pane.PaneGroup;
RadSplitContainer rsc = paneGroup.ParentContainer;
int
count0 = DockingControl.Items.Count;
//If two or more pane in one PaneGroup or SplitContainer,just remove the pane from its parent.
if
(paneGroup.ChildrenOfType<RadPane>().Count > 1)
{
pane.RemoveFromParent();
}
else
if
(rsc.ChildrenOfType<RadPane>().Count > 1)
{
pane.RemoveFromParent();
}
else
{
if
(rsc.IsInToolWindow)
{
//Remove the ToolWindow when the pane is floating.
ToolWindow tw = rsc.ParentOfType<ToolWindow>();
Canvas canvas = tw.Parent
as
Canvas;
canvas.Children.Remove(tw);
}
else
{
DockingControl.Items.Remove(rsc);
}
}
int
count = DockingControl.Items.Count;
// Remove the RadSplitContainer from DockingControl.
foreach
(UIElement element
in
DockingControl.Items)
{
RadSplitContainer sc = element
as
RadSplitContainer;
if
(sc.ChildrenOfType<RadPane>().Count < 1)
{
DockingControl.Items.Remove(element);
break
;
}
}
}
}
}