Laden...

Visual Studio Add-In: WPF/XAML Lesen und Schreiben.

Erstellt von Gee.sys vor 13 Jahren Letzter Beitrag vor 13 Jahren 1.753 Views
G
Gee.sys Themenstarter:in
10 Beiträge seit 2011
vor 13 Jahren
Visual Studio Add-In: WPF/XAML Lesen und Schreiben.

Moin Moin,

kurze Frage:

Ich bin gerade dabei ein Visual Studio Add-In zu "basteln".
Ich bräuchte gundlegende Funktionen fürs Lesen und ändern von xaml-Dateien der WPF Formulare.
Wie gehe ich am besten vor? Hat jemand einen Vorschlag?

Danke
Gee

6.862 Beiträge seit 2003
vor 13 Jahren

Hallo,

Welche VS Versionen willst du denn unterstützen? Ab VS 2010 ist das Schreiben von Extensions relativ einfach und es ist gut dokumentiert wie man auf die verschiedenen Parts des Editors per MEF zugreift.

Baka wa shinanakya naoranai.

Mein XING Profil.

G
Gee.sys Themenstarter:in
10 Beiträge seit 2011
vor 13 Jahren

Nur VS 2010 (Pro)

6.862 Beiträge seit 2003
vor 13 Jahren

Dann würd ich auf jeden Fall zu Extensions mit MEF statt Addins raten. In Extending the Editor findest du alles.

Baka wa shinanakya naoranai.

Mein XING Profil.

G
Gee.sys Themenstarter:in
10 Beiträge seit 2011
vor 13 Jahren

Hmm,

also ich bin bereits mittendrin. Ich habe "ganz normales" Add-In Projekt gestartet, das nun bereits einiges an Funktionalität beinhaltet.
Nun bin ich an einem Punkt, wo ich xaml-Dateien der Solution lesen und bearbeiten möchte.
Ich möchte ungern von vorn anfangen und Codeeditor-Erweiterung brauche ich ebensowenig.


            if (_applicationObject.Solution.Projects.Count > 0)
            {

                foreach (Project project in _applicationObject.Solution.Projects)
                {
                    if (project.Name != ExtensionName)
                    {
                        foreach (ProjectItem projectItem in project.ProjectItems)
                        {
                            if (projectItem.Name.EndsWith(".xaml"))
                            {
                                //xaml-Struktur lesen, Namespaces hinzufügen, Attribute ändern...
                            }
                        }
                    }
                }
            }

_applicationObject ist hier vom Typ DTE2

1.044 Beiträge seit 2008
vor 13 Jahren

Hallo Gee.sys,

kannst du uns näher beschreiben, was du vor hast? Ich habe das Gefühl, dass auf auf dem falschen Weg bist. Ich würde das persönlich ein wenig anders angehen. Mehr Informationen findest du ja in dem Link von talla.

Du kannst über die DTE direkt auf die Dokumente zugreifen. Du brauchst also nicht die XAML-Datei manuell einzulesen. Es gibt im SDK vorgefertige Klassen dafür. Hier ein kleines Beispiel von mir:

private void TestExecution()
{
    var activeDocument = this._applicationObject.ActiveDocument;

    if (!activeDocument.ReadOnly)
    {
        var textDocument = activeDocument.Object("TextDocument") as TextDocument;
        textDocument.ClearBookmarks();
    }

}

Falls du ein Beispiel suchst, dann kann ich dir Xaml Markup Styler Visual Studio 2010 Extension empfehlen. Das Projekt ist Open-Source, du kannst dir also den Quellcode herunterladen und/oder ansehen.

zero_x

G
Gee.sys Themenstarter:in
10 Beiträge seit 2011
vor 13 Jahren

Hi zero,

mein Add-In kümmert sich um die Lokalisierung von WPF Anwendungen.
Konkret geht es gerade darum, die xaml zu parsen und z.B. Labeltexte durch eine Markupextension zu ersetzen und den Text als Resource auszulagern.

Dazu muss also der xaml ein Namespace hinzugefügt und entsprechende Attribute geändert werden. Außerdem brauche ich die vollständigen Namen Form1.Label1.Content.
Ich kann natürlich mit Stringfunktionen herumbasteln, aber ich bin sicher es geht auch einfacher.

49.485 Beiträge seit 2005
vor 13 Jahren

Hallo Gee.sys,

aber ich bin sicher es geht auch einfacher.

mit der XmlDocument-Klasse

herbivore

G
Gee.sys Themenstarter:in
10 Beiträge seit 2011
vor 13 Jahren

Danke,

sowas habe ich gesucht.

Hat noch jemand nen Tipp, wie ich das Document des ProjectItem in ein XmlDocument geladen bekomme?