2009-05-22 10 views
4

Je suis un fichier XAML qui commence comme ceci:Obtenir un FlowDocument à partir d'un fichier modèle XAML

<FlowDocument 
     x:Name="flowDocument" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     xmlns:Drawing="clr-namespace:System.Drawing;assembly=System.Drawing" 

solution actuelle utilise un StremReader en se référant au chemin physique du fichier XAML avec le FlowDocument et analyse ensuite les données dans le modèle.

Cette solution n'est pas valide, j'ai donc besoin d'obtenir le flowdocument sans se référer au chemin physique.

Je voudrais utiliser l'espace de noms xmlns ou similaire dans mon code C# et faire comme

string result = XamlWriter.Save(flowDocument) 

Et utiliser le résultat de l'analyse syntaxique.

Suggestions?

Répondre

5

Si je comprends bien, vous voulez obtenir le FlowDocument à partir d'une chaîne? Vous pouvez le faire avec XamlReader.Parse:

string result = XamlWriter.Save(flowDocument); 
FlowDocument new_doc = (FlowDocument)XamlReader.Parse(result); 

EDIT: Si le fichier XAML est une partie de votre projet, vous pouvez le marquer comme EmbeddedResource et utiliser ce qui suit pour le charger:

Stream doc_stream = Assembly.GetExecutingAssembly() 
          .GetManifestResourceStream("YourNamespace.YourFile.xaml"); 
FlowDocument doc = (FlowDocument)XamlReader.Load(doc_stream); 
+0

Désolé pour ma présentation maladroite de mon problème. J'ai un fichier xaml avec le flowdocument xaml. Je veux mettre la main sur le contenu du fichier xaml, une chaîne serait super sympa. – Slampen

+0

Si votre code XAML fait partie de votre projet, vous pouvez utiliser la méthode de ressource. Sinon, vous devez le localiser sur le disque en quelque sorte. –

Questions connexes