Bonjour,
j'ai besoin de sérialiser puis de désérialiser un usercontrol, pour cela, j'ai voulu utilisé XamlWriter/XamlReader
J'ai fais un usercontrol tout simple:
Code XML : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 <UserControl x:Class="UCTest" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> <Grid> <Button x:Name="btnTest" Content="Hello !" Width="50" Height="25"/> </Grid> </UserControl>
et voici mon code pour serialiser/déserialiser
Code VB : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 'nouveau usercontrol Dim uc As New UCTest() 'on sérialise le usercontrol Dim str As String = Markup.XamlWriter.Save(uc) 'traitement ... Dim stringReader As New IO.StringReader(str) Dim xmlReader As Xml.XmlReader = Xml.XmlReader.Create(stringReader) 'on déserialise le usercontrol Dim obj = CObj(Markup.XamlReader.Load(xmlReader)) ' -> exception
et j'obtiens l'exception suivante:
En sachant que pour tester, je n'ai fais aucune modification sur str (le usercontrol sérialiser)La valeur 'btnTest' ne peut pas être attribuée à la propriété 'Name' de l'objet 'System.Windows.Controls.Button'. Impossible d'inscrire en double Name 'btnTest' dans cette portée.
J'obtiens la même erreur si dans le usercontrol, a la place de "x:Name" je met simplement "Name".
Et je n'ai pas d'erreur s'il je ne spécifie pas de "Name"
La chaine que j'obtiens après le XamlWriter est :
<UCTest xmlns="clr-namespace:WpfApplication;assembly=WpfApplication" xmlns:av="http://schemas.microsoft.com/winfx/2006/xaml/presentation"><av:Grid><av:Button Name="btnTest" Width="50" Height="25">Hello !</av:Button></av:Grid></UCTest>
Partager