On lit souvent sur le net que les DependencyObjects ne sont pas marqués comment étant sérializable et que c'est un inconvénient majeur dans leur utilisation au quotidien. Il existe cependant une façon facile de les sérializer.
Pour cela, on utilise XAMLWriter et XAMLReader (en .NET 3.5). Voici un exemple de code :
//DependendyObject de démo
public class MyDependencyObject : DependencyObject
{
public static readonly DependencyProperty MyDependencyPropertyProperty =
DependencyProperty.Register("MyDependencyProperty", typeof(String), typeof(MyDependencyObject));
public String MyDependencyProperty
{
get
{
return (String)GetValue(MyDependencyObject.MyDependencyPropertyProperty);
}
set
{
SetValue(MyDependencyObject.MyDependencyPropertyProperty, value);
}
}
}
...
MyDependencyObject obj = new MyDependencyObject();
obj.MyDependencyProperty = "One love";
String serializedString = XamlWriter.Save(obj);
Console.WriteLine(serializedString);
Cela produira alors un fichier XML de ce type :
<MyDependencyObject
MyDependencyProperty="One love"
xmlns="clr-namespace:ANTOINE.Jonathan;assembly=ANTOINE.Jonathan" />
(Article traduit de l'anglais depuis : http://blog.lexique-du-net.com )