There are many times when we need a way to save user settings for our Silverlight Applications. We had one such scenario in our application & thanks to Telerik's PersistenceManager this task becomes super easy. In order for you to enable saving the properties/ selected values of the UI controls all you have to do is
- Add a reference to
- Telerik.Windows.Controls
- Telerik.Windows.PersistenceFramework
Note: If you are not able to find PersistenceFramework binaries in the list of available Telerik assemblies while adding a reference, just look for it into the Telerik Installation folder.
C:\Program Files (x86)\Telerik\RadControls for Silverlight Q3 2012\Binaries\Silverlight
- Add a persistenceStorageID to all the UI
controls to which you want to save the properties for
<UserControl x:Class="PersitentSettingDemo.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:telerik="http://schemas.telerik.com/2008/xaml/presentation"
mc:Ignorable="d" d:DesignWidth="640" d:DesignHeight="480">
<Grid x:Name="LayoutRoot">
<Grid.RowDefinitions>
<RowDefinition Height="35"/>
<RowDefinition Height="35"/>
<RowDefinition Height="35"/>
<RowDefinition Height="35"/>
<RowDefinition Height="35"/>
<RowDefinition Height="35"/>
<RowDefinition Height="35"/>
<RowDefinition Height="35"/>
<RowDefinition Height="35"/>
</Grid.RowDefinitions>
<telerik:RadNumericUpDown Grid.Row="0" Width="200" telerik:PersistenceManager.StorageId="myNumericUpDown"/>
<CheckBox Grid.Row="1" Width="200" Content="Check Me" Margin="0,5,0,0" telerik:PersistenceManager.StorageId="myCheckbox"/>
<telerik:RadComboBox Grid.Row="2" Width="200" Margin="0,5,0,0" telerik:PersistenceManager.StorageId="myComboBox">
<telerik:RadComboBoxItem Content="Item1"/>
<telerik:RadComboBoxItem Content="Item2"/>
<telerik:RadComboBoxItem Content="Item3"/>
<telerik:RadComboBoxItem Content="Item4"/>
</telerik:RadComboBox>
<RadioButton Content="Check Me" Width="200" Grid.Row="3" Margin="0,5,0,0" telerik:PersistenceManager.StorageId="myRadioButton"/>
<telerik:RadButton Content="Save Settings" Click="RadButton_Click" Grid.Row="4" Width="200" HorizontalAlignment="Left"/>
<telerik:RadButton Content="Restore Settings" Click="RadButton_Click_1" Grid.Row="4" Width="200" HorizontalAlignment="Right"/>
</Grid>
</UserControl>
- Save the user settings in Isolated
Storage
IsolatedStorageProvider isoProvider = new IsolatedStorageProvider(); isoProvider.SaveToStorage();And That's all. Just follow the 3 steps & you can now save the properties of all your UI controls & retrieve them when needed.
Retrieval of the settings is as easy as a method call
isoProvider.LoadFromStorage();
Super Easy, isn't it?
Here is my code behind if you are feeling lazy & just want to reuse it
using System.Windows; using System.Windows.Controls; using Telerik.Windows.Persistence.Storage; namespace PersitentSettingDemo { public partial class MainPage : UserControl { IsolatedStorageProvider isoProvider = new IsolatedStorageProvider(); public MainPage() { InitializeComponent(); } private void RadButton_Click(object sender, RoutedEventArgs e) { isoProvider.SaveToStorage(); } private void RadButton_Click_1(object sender, RoutedEventArgs e) { isoProvider.LoadFromStorage(); } } }
To test click on the Save Settings button, then refresh the page & notice that all controls have restored to their default values.
Now click on the Restore Settings button & notice again that all user settings are now populated again.
On a side note if you want to save the user settings for all your controls in a container then just attach the StorageId property to that container control instead.
For example, I could have achieved the same result by adding
<Grid x:Name="LayoutRoot" telerik:PersistenceManager.StorageId="mygridContainer">
& removing the storage ID from all individual controls.
On another side note & an important one; The StorageId could be any arbitrary unique string that the Framework can use to identify the control uniquely.
More details on it here:
http://www.telerik.com/help/silverlight/persistence-framework-getting-started.html
As far as I know, it has to be unique for every instance of IsolatedStorageProvider but I will leave that test to another blog post.
I will also need to figure out how this behaves in a multiuser scenario. Will write as soon as I have more information about it.
For Now use this simple technique & nJoy Coding. P.S. Attached the demo project for your reference.

Join the conversation! Your thoughts help the community grow.