When I try to set the theme on the RadDocking class it crashes. The error is "Element already has a logical parent. It must be detached from the old parent before it is attached to a new one." See the attached screen shot.
RadDocking Version: 2011.3.1116.40
RadDocking Version: 2011.3.1116.40
using
System;
using
System.Collections.Generic;
using
System.Linq;
using
System.Text;
using
System.Windows;
using
System.Windows.Controls;
using
System.Windows.Data;
using
System.Windows.Documents;
using
System.Windows.Input;
using
System.Windows.Media;
using
System.Windows.Media.Imaging;
using
System.Windows.Navigation;
using
System.Windows.Shapes;
using
Telerik.Windows.Controls;
using
Telerik.Windows.Persistence.Services;
using
Telerik.Windows.Persistence.Storage;
namespace
BasicDockingPersistenceExample
{
public
partial
class
MainWindow : Window
{
private
Theme _currentTheme =
null
;
public
MainWindow()
{
this
.DataContext =
new
MainWindowViewModel();
_currentTheme =
new
Office_SilverTheme();
StyleManager.ApplicationTheme = _currentTheme;
InitializeComponent();
}
private
void
RadButton_Click(
object
sender, RoutedEventArgs e)
{
_currentTheme =
new
Office_BlackTheme();
StyleManager.ApplicationTheme = _currentTheme;
Telerik.Windows.Controls.StyleManager.SetTheme(BuildDocking, _currentTheme);
}
}
}
<
Window
x:Class
=
"BasicDockingPersistenceExample.MainWindow"
xmlns:telerik
=
"http://schemas.telerik.com/2008/xaml/presentation"
Title
=
"MainWindow"
Height
=
"588"
Width
=
"876"
Loaded
=
"BuildDockingLoaded"
>
<
Window.Resources
>
<
Style
TargetType
=
"{x:Type telerik:RadDocking}"
>
<
Setter
Property
=
"telerik:StyleManager.Theme"
Value
=
"{x:Static telerik:StyleManager.ApplicationTheme}"
/>
</
Style
>
<
Style
TargetType
=
"{x:Type telerik:RadDockPanel}"
>
<
Setter
Property
=
"telerik:StyleManager.Theme"
Value
=
"{x:Static telerik:StyleManager.ApplicationTheme}"
/>
</
Style
>
<
Style
TargetType
=
"{x:Type telerik:RadPane}"
>
<
Setter
Property
=
"telerik:StyleManager.Theme"
Value
=
"{x:Static telerik:StyleManager.ApplicationTheme}"
/>
</
Style
>
<
Style
TargetType
=
"{x:Type telerik:RadPaneGroup}"
>
<
Setter
Property
=
"telerik:StyleManager.Theme"
Value
=
"{x:Static telerik:StyleManager.ApplicationTheme}"
/>
</
Style
>
<
Style
TargetType
=
"{x:Type telerik:RadSplitContainer}"
>
<
Setter
Property
=
"telerik:StyleManager.Theme"
Value
=
"{x:Static telerik:StyleManager.ApplicationTheme}"
/>
</
Style
>
<
Style
TargetType
=
"{x:Type telerik:ToolWindow}"
>
<
Setter
Property
=
"telerik:StyleManager.Theme"
Value
=
"{x:Static telerik:StyleManager.ApplicationTheme}"
/>
</
Style
>
</
Window.Resources
>
<
telerik:RadDocking
x:Name
=
"BuildDocking"
HorizontalAlignment
=
"Stretch"
VerticalAlignment
=
"Stretch"
Padding
=
"2"
HasDocumentHost
=
"False"
telerik:PersistenceManager.StorageId
=
"BuildDocking"
>
<
telerik:RadSplitContainer
Orientation
=
"Horizontal"
InitialPosition
=
"DockedBottom"
>
<
telerik:RadPaneGroup
>
<
telerik:RadPane
x:Name
=
"Pane1Panel"
Header
=
"Pane 1"
telerik:RadDocking.SerializationTag
=
"Pane1Panel"
IsPinned
=
"{Binding Path=Pane1PanelIsPinned, Mode=TwoWay}"
CanUserClose
=
"False"
CanDockInDocumentHost
=
"False"
>
</
telerik:RadPane
>
</
telerik:RadPaneGroup
>
</
telerik:RadSplitContainer
>
<
telerik:RadSplitContainer
Orientation
=
"Horizontal"
InitialPosition
=
"DockedLeft"
>
<
telerik:RadPaneGroup
telerik:ProportionalStackPanel.RelativeSize
=
"200, 300"
>
<
telerik:RadPane
x:Name
=
"Pane2Panel"
Header
=
"Pane 2"
telerik:RadDocking.SerializationTag
=
"Pane2Panel"
IsPinned
=
"{Binding Path=Pane2PanelIsPinned, Mode=TwoWay}"
CanUserClose
=
"False"
CanDockInDocumentHost
=
"False"
>
<
telerik:RadButton
Content
=
"Change Theme"
Click
=
"RadButton_Click"
Height
=
"30"
VerticalAlignment
=
"Top"
Margin
=
"10"
/>
</
telerik:RadPane
>
</
telerik:RadPaneGroup
>
</
telerik:RadSplitContainer
>
<
telerik:RadSplitContainer
Orientation
=
"Horizontal"
InitialPosition
=
"DockedRight"
MinWidth
=
"300"
>
<
telerik:RadPaneGroup
>
<
telerik:RadPane
Header
=
"Pane 3"
x:Name
=
"Pane3Panel"
telerik:RadDocking.SerializationTag
=
"Pane3Panel"
IsPinned
=
"{Binding Path=Pane3PanelIsPinned, Mode=TwoWay}"
CanUserClose
=
"False"
CanDockInDocumentHost
=
"False"
>
</
telerik:RadPane
>
</
telerik:RadPaneGroup
>
</
telerik:RadSplitContainer
>
<
telerik:RadSplitContainer
Orientation
=
"Vertical"
InitialPosition
=
"DockedTop"
MinHeight
=
"100"
>
<
telerik:RadPaneGroup
>
<
telerik:RadPane
Header
=
"Pane 4"
x:Name
=
"Pane4Panel"
telerik:RadDocking.SerializationTag
=
"Pane4Panel"
IsPinned
=
"{Binding Path=Pane4PanelIsPinned, Mode=TwoWay}"
CanUserClose
=
"False"
CanDockInDocumentHost
=
"False"
>
</
telerik:RadPane
>
</
telerik:RadPaneGroup
>
</
telerik:RadSplitContainer
>
<
telerik:RadSplitContainer
Orientation
=
"Vertical"
InitialPosition
=
"DockedTop"
MinHeight
=
"100"
>
<
telerik:RadPaneGroup
>
<
telerik:RadPane
Header
=
"Pane 5"
x:Name
=
"Pane5Panel"
telerik:RadDocking.SerializationTag
=
"Pane5Panel"
IsPinned
=
"{Binding Path=Pane5PanelIsPinned, Mode=TwoWay}"
CanUserClose
=
"False"
CanDockInDocumentHost
=
"False"
>
</
telerik:RadPane
>
</
telerik:RadPaneGroup
>
</
telerik:RadSplitContainer
>
</
telerik:RadDocking
>
</
Window
>
using
System;
using
System.Collections.Generic;
using
System.ComponentModel;
using
System.Linq;
using
System.Text;
namespace
BasicDockingPersistenceExample
{
public
class
MainWindowViewModel : INotifyPropertyChanged
{
public
MainWindowViewModel()
{
}
#region DockPanel pinning properties
private
bool
? _pane2PanelIsPinned =
true
;
public
bool
? Pane2PanelIsPinned
{
get
{
return
_pane2PanelIsPinned; }
set
{
_pane2PanelIsPinned = value;
FirePropertyChanged(
"Pane2PanelIsPinned"
);
}
}
private
bool
? _pane1PanelIsPinned =
false
;
public
bool
? Pane1PanelIsPinned
{
get
{
return
_pane1PanelIsPinned; }
set
{
_pane1PanelIsPinned = value;
FirePropertyChanged(
"Pane1PanelIsPinned"
);
}
}
private
bool
? _pane5PanelIsPinned =
false
;
public
bool
? Pane5PanelIsPinned
{
get
{
return
_pane5PanelIsPinned; }
set
{
_pane5PanelIsPinned = value;
FirePropertyChanged(
"Pane5PanelIsPinned"
);
}
}
private
bool
? _pane3PanelIsPinned =
true
;
public
bool
? Pane3PanelIsPinned
{
get
{
return
_pane3PanelIsPinned; }
set
{
_pane3PanelIsPinned = value;
FirePropertyChanged(
"Pane3PanelIsPinned"
);
}
}
private
bool
? _pane4PanelIsPinned =
true
;
public
bool
? Pane4PanelIsPinned
{
get
{
return
_pane4PanelIsPinned; }
set
{
_pane4PanelIsPinned = value;
FirePropertyChanged(
"Pane4PanelIsPinned"
);
}
}
#endregion
public
event
PropertyChangedEventHandler PropertyChanged;
protected
void
FirePropertyChanged(
string
property)
{
if
(PropertyChanged !=
null
)
PropertyChanged(
this
,
new
PropertyChangedEventArgs(property));
}
}
}