2011-07-21 2 views
0

Il est nécessaire de fournir une sorte d'interface (save/edit/load) aux styles générés dynamiquement qui sont formés à partir de GeometryDrawings. Le problème est la distinction entre eux dans la situation où ils manquent de propriété de nom. J'ai essayé quelque chose comme ceci:GeometryDrawing serialization/deserialization

// some dummy predefined style, it has more drawings but i keep first one 
const string templateXaml = @"<DrawingBrush xmlns=""http://schemas.microsoft.com/winfx/2006/xaml/presentation"" xmlns:x=""http://schemas.microsoft.com/winfx/2006/xaml"" Stretch=""Uniform""> 
       <DrawingBrush.Drawing> 
        <DrawingGroup> 
         <DrawingGroup.Children> 
          <GeometryDrawing Geometry=""F1 M 77,92L 704,92L 704,517L 77,517L 77,92 Z "" x:Name=""test_name""> 
           <GeometryDrawing.Pen> 
            <Pen Thickness=""4"" LineJoin=""Round"" Brush=""#FFFF7D00""/> 
           </GeometryDrawing.Pen> 
          </GeometryDrawing> 
    <!--More drawings here --> 
          </DrawingGroup.Children> 
        </DrawingGroup> 
       </DrawingBrush.Drawing> 
      </DrawingBrush>"; 
     var drawingBrush = XamlReader.Parse(templateXaml) as DrawingBrush; 
     var firstDrawing = (drawingBrush.Drawing as DrawingGroup).Children[0] as GeometryDrawing; 
     //.. 
     var name = firstDrawing.GetValue(NameProperty); 
     //.. 
     firstDrawing.SetValue(FrameworkElement.NameProperty, "some value"); 

Je voudrais avoir x: Nom ici dans la variable nom (ou quelque chose comme ça) pour pouvoir changer et que sérialisation pour obtenir, par exemple, le même style mais avec des noms différents pour les dessins (le cas est maintenant ils sont nommés Element1,2,3 ..., et doivent être nommés en fonction du domaine, et ce traitement doit être automatique mais pas manuel en ce qui concerne le fait qu'il n'y a pas de capacité WYSIWYG'ly faire cela - chaque dessin est mis en Visual, Visuals sont mis en CustomElement Framework etc.). Bien sûr, tout le processus de travail avec Drawings est une douleur, mais c'est une exigence de conception de système que je ne peux pas ignorer. Merci d'avance.

+0

Je ne comprends pas très bien ce que vous demandez. Demandez-vous comment définir votre template XML pour que x: Name soit facile à configurer ou à modifier? –

+0

Trier par. Je veux définir le modèle de l'élément de dessin complexe et être capable de lire/enregistrer (de préférence via des algorithmes de sérialisation standard) avec la capacité d'identifier ses éléments et de maintenir leur état. – Jaded

Répondre

0

N'a pas trouvé de meilleur moyen que d'emballer des dessins dans les classes BL et sérialiser/désérialiser les. Perte de cohérence et violation des exigences un peu - maintenant j'ai deux entités (des géométries simples et des classes qui les décrivent) représentant des objets graphiques, mais elles peuvent être converties/échangées si nécessaire.

Questions connexes