// Check to see if there are any root nodes in the TreeView
if (treeview.Nodes!=null
&& treeview.Nodes.Count == 0)
{
Nodes = null;
return;
}
// Populate the Nodes array with child nodes
Nodes = new TreeNodeData[treeview.Nodes.Count];
for (Int32 i = 0; i < treeview.Nodes.Count; i++)
{
Nodes[i] = new TreeNodeData(treeview.Nodes[i]);
}
Mais si tu utilise .net 3.5 je te conseillerais plutôt un petit bout de
linq pour remplacer tout celà:
public TreeViewData(TreeView treeview)
{
Nodes = treeview.Nodes.Cast<TreeNode>()
.Select(c => new TreeNodeData(c))
.ToArray();
}
C'est tout de même plus propre ;)
Pour ton histoire de node c'est aussi le même genre de choses.
public TreeNodeData(TreeNode node)
{
Mais petite question : pourquoi passes tu par ces classes
intermédiaires? je crois que l'on peut très bien sérialisé les donnée du
treeview en passant juste pas les nodes du trieeview ou alors en faisan t
par des nodes héritant de treeviewNode et en leur ajoutant l'attribut de
sérialisation...enfin je pense que c'est possible, jamais testé.
// Check to see if there are any root nodes in the TreeView
if (treeview.Nodes!=null
&& treeview.Nodes.Count == 0)
{
Nodes = null;
return;
}
// Populate the Nodes array with child nodes
Nodes = new TreeNodeData[treeview.Nodes.Count];
for (Int32 i = 0; i < treeview.Nodes.Count; i++)
{
Nodes[i] = new TreeNodeData(treeview.Nodes[i]);
}
Mais si tu utilise .net 3.5 je te conseillerais plutôt un petit bout de
linq pour remplacer tout celà:
public TreeViewData(TreeView treeview)
{
Nodes = treeview.Nodes.Cast<TreeNode>()
.Select(c => new TreeNodeData(c))
.ToArray();
}
C'est tout de même plus propre ;)
Pour ton histoire de node c'est aussi le même genre de choses.
public TreeNodeData(TreeNode node)
{
Mais petite question : pourquoi passes tu par ces classes
intermédiaires? je crois que l'on peut très bien sérialisé les donnée du
treeview en passant juste pas les nodes du trieeview ou alors en faisan t
par des nodes héritant de treeviewNode et en leur ajoutant l'attribut de
sérialisation...enfin je pense que c'est possible, jamais testé.
// Check to see if there are any root nodes in the TreeView
if (treeview.Nodes!=null
&& treeview.Nodes.Count == 0)
{
Nodes = null;
return;
}
// Populate the Nodes array with child nodes
Nodes = new TreeNodeData[treeview.Nodes.Count];
for (Int32 i = 0; i < treeview.Nodes.Count; i++)
{
Nodes[i] = new TreeNodeData(treeview.Nodes[i]);
}
Mais si tu utilise .net 3.5 je te conseillerais plutôt un petit bout de
linq pour remplacer tout celà:
public TreeViewData(TreeView treeview)
{
Nodes = treeview.Nodes.Cast<TreeNode>()
.Select(c => new TreeNodeData(c))
.ToArray();
}
C'est tout de même plus propre ;)
Pour ton histoire de node c'est aussi le même genre de choses.
public TreeNodeData(TreeNode node)
{
Mais petite question : pourquoi passes tu par ces classes
intermédiaires? je crois que l'on peut très bien sérialisé les donnée du
treeview en passant juste pas les nodes du trieeview ou alors en faisan t
par des nodes héritant de treeviewNode et en leur ajoutant l'attribut de
sérialisation...enfin je pense que c'est possible, jamais testé.
Bonjour Gloops,
En utilisant l'instruction
this.Tag = (node.Tag != null) && node.Tag.GetType().IsSerializable
? node.Tag
: null;
Cela ne suffit pas à calmer le compilateur?
Sur mon projet de test je n'ai pas ce soucis.
Bonjour Gloops,
En utilisant l'instruction
this.Tag = (node.Tag != null) && node.Tag.GetType().IsSerializable
? node.Tag
: null;
Cela ne suffit pas à calmer le compilateur?
Sur mon projet de test je n'ai pas ce soucis.
Bonjour Gloops,
En utilisant l'instruction
this.Tag = (node.Tag != null) && node.Tag.GetType().IsSerializable
? node.Tag
: null;
Cela ne suffit pas à calmer le compilateur?
Sur mon projet de test je n'ai pas ce soucis.
Bonjour Gloops,
En utilisant l'instruction
this.Tag = (node.Tag != null) && node.Tag.GetType().IsSerializable
? node.Tag
: null;
Cela ne suffit pas à calmer le compilateur?
Sur mon projet de test je n'ai pas ce soucis.
Bonjour Gloops,
En utilisant l'instruction
this.Tag = (node.Tag != null) && node.Tag.GetType().IsSerializable
? node.Tag
: null;
Cela ne suffit pas à calmer le compilateur?
Sur mon projet de test je n'ai pas ce soucis.
Bonjour Gloops,
En utilisant l'instruction
this.Tag = (node.Tag != null) && node.Tag.GetType().IsSerializable
? node.Tag
: null;
Cela ne suffit pas à calmer le compilateur?
Sur mon projet de test je n'ai pas ce soucis.
Bonjour Gloops,
Je comprend que tu te pose pas mal de question au sujet de la
sérialisation, mais as tu été faire un petit tour dans la MSDN po ur voir
tout ce dont regorgeait le namespace System.Xml.Serialization.
C'est assez surprenant de voir que XmlSerializer dispose de bon nombres
de possibilité pour gérer finement un fichier XML mais qu'il est
totalement mésestimé... pas mal de monde pense qu'il ne sert qu'à
sérialiser ou dé-sérialiser un XML qui ne serra lisible que via . net.
Ceci est faut faut et archi faux... enfin ce n'est pas ton sujet, pardo n
je m'égards. Regardes bien le XmlSerializer il dispose dans
System.Xml.Serialization d'attributs pouvant être ajouté à une cl asse
pour manager le comportement de l'objet lors de sa sérialisation.
Par exemple :
pour changer le nom d'un propriété de type énumération lors de sa
sérialisation
[System.Xml.Serialization.XmlArrayItem("Menuitem")]
public ObservableCollection<MyMenuItem> Items
{
get { return myItems; }
}
Changer le nom d'un noeud (donc le nom de la classe sérialisée):
[XmlRoot("Menuitem")]
public class MyMenuItem
{
}
Interdire la sérialisation d'une propriété
[System.Xml.Serialization.XmlIgnore]
public ImageSource Image
{
}
Enfin ce ne sont que des exemples, il y encore bien d'autres choses qui
sont possible et qui peuvent rendre service dans System.Xml.Serializati on.
Bonjour Gloops,
Je comprend que tu te pose pas mal de question au sujet de la
sérialisation, mais as tu été faire un petit tour dans la MSDN po ur voir
tout ce dont regorgeait le namespace System.Xml.Serialization.
C'est assez surprenant de voir que XmlSerializer dispose de bon nombres
de possibilité pour gérer finement un fichier XML mais qu'il est
totalement mésestimé... pas mal de monde pense qu'il ne sert qu'à
sérialiser ou dé-sérialiser un XML qui ne serra lisible que via . net.
Ceci est faut faut et archi faux... enfin ce n'est pas ton sujet, pardo n
je m'égards. Regardes bien le XmlSerializer il dispose dans
System.Xml.Serialization d'attributs pouvant être ajouté à une cl asse
pour manager le comportement de l'objet lors de sa sérialisation.
Par exemple :
pour changer le nom d'un propriété de type énumération lors de sa
sérialisation
[System.Xml.Serialization.XmlArrayItem("Menuitem")]
public ObservableCollection<MyMenuItem> Items
{
get { return myItems; }
}
Changer le nom d'un noeud (donc le nom de la classe sérialisée):
[XmlRoot("Menuitem")]
public class MyMenuItem
{
}
Interdire la sérialisation d'une propriété
[System.Xml.Serialization.XmlIgnore]
public ImageSource Image
{
}
Enfin ce ne sont que des exemples, il y encore bien d'autres choses qui
sont possible et qui peuvent rendre service dans System.Xml.Serializati on.
Bonjour Gloops,
Je comprend que tu te pose pas mal de question au sujet de la
sérialisation, mais as tu été faire un petit tour dans la MSDN po ur voir
tout ce dont regorgeait le namespace System.Xml.Serialization.
C'est assez surprenant de voir que XmlSerializer dispose de bon nombres
de possibilité pour gérer finement un fichier XML mais qu'il est
totalement mésestimé... pas mal de monde pense qu'il ne sert qu'à
sérialiser ou dé-sérialiser un XML qui ne serra lisible que via . net.
Ceci est faut faut et archi faux... enfin ce n'est pas ton sujet, pardo n
je m'égards. Regardes bien le XmlSerializer il dispose dans
System.Xml.Serialization d'attributs pouvant être ajouté à une cl asse
pour manager le comportement de l'objet lors de sa sérialisation.
Par exemple :
pour changer le nom d'un propriété de type énumération lors de sa
sérialisation
[System.Xml.Serialization.XmlArrayItem("Menuitem")]
public ObservableCollection<MyMenuItem> Items
{
get { return myItems; }
}
Changer le nom d'un noeud (donc le nom de la classe sérialisée):
[XmlRoot("Menuitem")]
public class MyMenuItem
{
}
Interdire la sérialisation d'une propriété
[System.Xml.Serialization.XmlIgnore]
public ImageSource Image
{
}
Enfin ce ne sont que des exemples, il y encore bien d'autres choses qui
sont possible et qui peuvent rendre service dans System.Xml.Serializati on.
// Check to see if there are any root nodes in the TreeView
if (treeview.Nodes!=null
&& treeview.Nodes.Count == 0)
{
Nodes = null;
return;
}
// Populate the Nodes array with child nodes
Nodes = new TreeNodeData[treeview.Nodes.Count];
for (Int32 i = 0; i < treeview.Nodes.Count; i++)
{
Nodes[i] = new TreeNodeData(treeview.Nodes[i]);
}
// Check to see if there are any root nodes in the TreeView
if (treeview.Nodes!=null
&& treeview.Nodes.Count == 0)
{
Nodes = null;
return;
}
// Populate the Nodes array with child nodes
Nodes = new TreeNodeData[treeview.Nodes.Count];
for (Int32 i = 0; i < treeview.Nodes.Count; i++)
{
Nodes[i] = new TreeNodeData(treeview.Nodes[i]);
}
// Check to see if there are any root nodes in the TreeView
if (treeview.Nodes!=null
&& treeview.Nodes.Count == 0)
{
Nodes = null;
return;
}
// Populate the Nodes array with child nodes
Nodes = new TreeNodeData[treeview.Nodes.Count];
for (Int32 i = 0; i < treeview.Nodes.Count; i++)
{
Nodes[i] = new TreeNodeData(treeview.Nodes[i]);
}
Ah, ben du coup, ça va déjà bien mieux, merci, puisque le souci q ue j'ai
maintenant, c'est que writer.WriteEndDocument n'écrit rien, dans le
fichier de sortie il me manque donc la balise </xml>. Certes une fois
qu'il n'y aura plus que ça je peux le faire en append dans un vulgair e
fichier texte, mais bon, si on peut travailler proprement ...
En dehors de ça j'aimerais bien aller à la ligne à chaque nouvell e
balise et respecter les indentations, mais ça je sais que c'est loin
d'être gagné.
Ah, ben du coup, ça va déjà bien mieux, merci, puisque le souci q ue j'ai
maintenant, c'est que writer.WriteEndDocument n'écrit rien, dans le
fichier de sortie il me manque donc la balise </xml>. Certes une fois
qu'il n'y aura plus que ça je peux le faire en append dans un vulgair e
fichier texte, mais bon, si on peut travailler proprement ...
En dehors de ça j'aimerais bien aller à la ligne à chaque nouvell e
balise et respecter les indentations, mais ça je sais que c'est loin
d'être gagné.
Ah, ben du coup, ça va déjà bien mieux, merci, puisque le souci q ue j'ai
maintenant, c'est que writer.WriteEndDocument n'écrit rien, dans le
fichier de sortie il me manque donc la balise </xml>. Certes une fois
qu'il n'y aura plus que ça je peux le faire en append dans un vulgair e
fichier texte, mais bon, si on peut travailler proprement ...
En dehors de ça j'aimerais bien aller à la ligne à chaque nouvell e
balise et respecter les indentations, mais ça je sais que c'est loin
d'être gagné.