or
<
Window
x:Class
=
"TestTelerikWpfApp.MainWindow"
xmlns:telerik
=
"http://schemas.telerik.com/2008/xaml/presentation"
xmlns:local
=
"clr-namespace:TestTelerikWpfApp"
Title
=
"MainWindow"
Height
=
"300"
>
<
Window.Resources
>
</
Window.Resources
>
<
StackPanel
>
<
TextBox
telerik:PersistenceManager.StorageId
=
"textBox"
/>
<
StackPanel
Orientation
=
"Vertical"
>
<
telerik:RadButton
Content
=
"Save"
Click
=
"SaveButton_Click"
/>
<
telerik:RadButton
Content
=
"Read"
Click
=
"ReadButton_Click"
/>
</
StackPanel
>
</
StackPanel
>
</
Window
>
namespace
TestTelerikWpfApp
{
using
System.Windows;
using
System.Windows.Controls;
using
Telerik.Windows.Persistence.Services;
using
Telerik.Windows.Persistence.Storage;
public
partial
class
MainWindow : Window
{
private
IsolatedStorageProvider isoProvider;
public
MainWindow()
{
InitializeComponent();
ServiceProvider.RegisterPersistenceProvider<ICustomPropertyProvider>(
typeof
(TextBox),
new
UnsetValuePropertyProvider());
isoProvider =
new
IsolatedStorageProvider();
}
private
void
SaveButton_Click(
object
sender, RoutedEventArgs e)
{
isoProvider.SaveToStorage();
}
private
void
ReadButton_Click(
object
sender, RoutedEventArgs e)
{
isoProvider.LoadFromStorage();
}
}
}
namespace
TestTelerikWpfApp
{
using
Telerik.Windows.Data;
using
Telerik.Windows.Persistence.Services;
class
UnsetValuePropertyProvider : ICustomPropertyProvider
{
public
CustomPropertyInfo[] GetCustomProperties()
{
return
new
CustomPropertyInfo[]
{
new
CustomPropertyInfo(
"UnsetValue"
,
typeof
(UnsetValueProxy))
};
}
public
void
InitializeObject(
object
context)
{
}
public
object
InitializeValue(CustomPropertyInfo customPropertyInfo,
object
context)
{
return
null
;
}
public
object
ProvideValue(CustomPropertyInfo customPropertyInfo,
object
context)
{
return
new
UnsetValueProxy() { Value = OperatorValueFilterDescriptorBase.UnsetValue };
}
public
void
RestoreValue(CustomPropertyInfo customPropertyInfo,
object
context,
object
value)
{
var unsetValueProxy = value
as
UnsetValueProxy;
var isUnsetValueSame = unsetValueProxy.Value == OperatorValueFilterDescriptorBase.UnsetValue;
// isUnsetValueSame = false !!!
}
}
}
namespace
TestTelerikWpfApp
{
class
UnsetValueProxy
{
public
object
Value {
get
;
set
; }
}
}