Bonjour,
Je souhaite sauvegarder/recharger pendant l'exécution des UserControls que je place sur un Canvas en les convertissant de 'C# object' en 'XAML string' et vice versa.

En voici un très simple :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
 
<UserControl x:Class="MyClass.SimpleRTB"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns : x="http://schemas.microsoft.com/winfx/2006/xaml"
    Height="200" Width="200">
    <Grid>
 
            <RichTextBox  Margin="0" x:Name="richTextBox1" VerticalAlignment="Stretch" Background="Lavender" />
 
    </Grid>
</UserControl>
Tout se passe bien pour obtenir le code XAML de ce UserControl.
Et pourtant je reçois une exception en essayant de recharger l'objet à partir de son code XAML :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
 
SimpleRTB newSimpleRTB = new SimpleRTB();
string XAMLCode = XamlWriter.Save(newSimpleRTB);
StringReader XAMLstringReader = new StringReader(XAMLCode);
XmlReader myXMLReader = XmlReader.Create(XAMLstringReader);
 
// Jusque là pas de souci.
 
// La prochaine ligne génère une exception !
SimpleRTB newSimpleRTB_2 = (SimpleRTB ) XamlReader.Load(myXMLReader);

Et voici ce qu'elle dit l'exception :

La valeur 'richTextBox1' ne peut pas être attribuée à la propriété 'Name' de l'objet 'System.Windows.Controls.RichTextBox'. Impossible d'inscrire en double Name 'richTextBox1' dans cette portée. Erreur à l'objet 'richTextBox1', ligne 1 position 242.
XAMLReader a un problème avec les 'Name' dans les UserControls. Lorsque je supprime x:Name="richTextBox1" de mon UserControl, tout marche sans problème. Bien évidemment je ne peux pas me permettre de ne pas mettre des Name à mes composants dans UserControl.

C'est marrant. Un autre gars a eu exactement le même problème et pourtant... :

http://www.developpez.net/forums/d76...n-name-x-name/

Auriez-vous des idées ?