<Window x:Class="RadControlsWpfApp1.MainWindow" xmlns:telerik="http://schemas.telerik.com/2008/xaml/presentation" Title="MainWindow" Height="550" Width="800"> <Grid> <telerik:RadPanelBar Name="radPanelBar1"> <telerik:RadPanelBarItem Header="Item 1" /> <telerik:RadPanelBarItem Header="Item 2" /> </telerik:RadPanelBar> </Grid></Window><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)); } }}