<
telerik:RadDatePicker
HorizontalAlignment
=
"Left"
Margin
=
"28,90,0,0"
Name
=
"radDatePicker1"
VerticalAlignment
=
"Top"
Width
=
"223"
SelectedValue
=
"{Binding Path=BoundDate}"
/>
/// <summary>
/// Gets the BoundDate property.
/// Changes to that property's value raise the PropertyChanged event.
/// This property's value is broadcasted by the Messenger's default instance when it changes.
/// </summary>
public
DateTime BoundDate
{
get
{
return
_boundDate;
}
set
{
if
(_boundDate == value)
{
return
;
}
var oldValue = _boundDate;
_boundDate = value;
// Update bindings and broadcast change using GalaSoft.MvvmLight.Messenging
RaisePropertyChanged(BoundDatePropertyName, oldValue, value,
true
);
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Telerik.Windows.Persistence;
using Telerik.Windows.Persistence.Storage;
namespace WpfApplication_Docking
{
static public class PersistenceStorage
{
#region Public methods.
/// <summary>
/// Load/Save all controls that contain "telerik:PersistenceManager.StorageId="..."
/// The file location is "$APPDATA\IsolatedStorage\..."
/// </summary>
/// <param name="pPersistenceAction">Load/Save</param>
/// <param name="pErrorMessage">Error received during the persistence.</param>
/// <returns>true if successfull otherwise false</returns>
static public bool Persist(PersistenceAction pPersistenceAction, out string pErrorMessage)
{
pErrorMessage = string.Empty;
PersistenceManager manager = new PersistenceManager();
//manager.PropertyPersisting += new Telerik.Windows.Persistence.Events.PropertyPersistingEventHandler(manager_PropertyPersisting);
IsolatedStorageProvider storage = new IsolatedStorageProvider(manager);
try
{
try
{
if (pPersistenceAction == PersistenceAction.Load)
{
storage.LoadFromStorage();
}
else if (pPersistenceAction == PersistenceAction.Save)
{
storage.SaveToStorage();
}
return true;
}
catch (Exception ex)
{
pErrorMessage = ex.Message;
return false;
}
}
finally
{
//manager.PropertyPersisting += new Telerik.Windows.Persistence.Events.PropertyPersistingEventHandler(manager_PropertyPersisting);
}
}
/// <summary>
/// Event triggered when the stream persistence didn't worked.
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
static void manager_PersistenceError(object sender, Telerik.Windows.Persistence.Events.PersistenceErrorEventArgs e)
{
mErrorMessage = e.Exception.Message;
mResult = false;
throw new NotImplementedException();
}
/// <summary>
/// This event is used to prevent any BroderBrush to have a transparent color when we persist an object.
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
static void manager_PropertyPersisting(object sender, Telerik.Windows.Persistence.Events.PersistingPropertyEventArgs e)
{
//Not needed since version 2011.3.1116.35 of Telerik
//if (e.Name == "BorderBrush")
// e.Cancel = true;
}
#endregion
#region Enumerators.
public enum PersistenceAction { Load, Save }
#endregion
#region Private declarations.
static private string mErrorMessage;
static private bool mResult;
#endregion
}
}
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));
}
}
}