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 :
Tout se passe bien pour obtenir le code XAML de ce UserControl.
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>
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 :
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.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.
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 ?
Partager