10.15.2009

Kein Designer in Expression Blend 3. No designer in Expression Blend 3.

Erstellt man mit Visual Studio ein Projekt vom Typ “Class Library”, fügt diesem dann eine XAML-Datei in Form von einem UserControl, einem Window oder einer Page hinzu, zeigt Expression Blend ab der Version 3.0 keinen Designer-Workspace mehr für diesen Projekttyp an. Das ist natürlich eine blöde Situation. Besonders dann, wenn man auf das MVVM-Pattern setzt und eben nicht nur in EXE-Assemblies WPF-Oberflächen hat.

Step01

Step02


(In Visual Studio wird der Designer Cider für WPF-Window-Elemente auch in einem Class Library Projekt angezeigt)

Step03
(In Expression Blend fehlt der Designer-Workspace)

Da ich mich durch mein Buchprojekt vom letzten Jahr intensiv mit dem Aufbau von Projekten in Visual Studio und dem Aufbau von Projektdateien beschäftigt hatte, dämmerte mir ziemlich schnell woran das Dilemma liegen könnte. Expression Blend scheint seit der Version 3 die Anzeige des Designer Workspace nicht mehr nur über die Art der geöffneten Datei zu bestimmen. Schon mit dem Laden eines Projekts, scheint Expression Blend 3 festzulegen, ob für die Dateien in dem Projekt ein Designer angezeigt werden kann oder nicht. Neben den Informationen zu den Referenzierten Assemblies, werden in den Projektdateien auch die Informationen zu dem entsprechenden Projekttypt hinterlegt. Erstellt man aber ein Class Library Projekt, kann mit dem erstellen dieses Projekt Visual Studio noch nicht wissen das man später eventuell WPF-Dateien hinzufügen möchte. Darum fehlen in der Projektdatei dieses Projekttyps die Eintragungen für die verwendete Sprache und für ein WPF-Projekt. Dies lässt sich aber sehr einfach nachholen. Dazu öffnet man das Projekt mit Visual Studio und ruft aus dem Kontextmenu des Projektdatei im Solution Explorer den Befehl “Unload Project” auf. Danach wird die Projektdatei ausgegraut im Solution Explorer von Visual Studio angezeigt.

Step04

Ist das Projekt entladen, kann der Befehl “Edit…” über das Kontextmenu des Projekts im Solution Explorer aufgerufen werden. In der geöffneten Projektdatei werden nun die entsprechenden Einträge für ein WPF Projekt, das mit der Programmiersprache C# erstellt wird, eingetragen. Das fügt man im Tag <PropertyGroup> das Sub-Tag <ProjectTypeGuids> mit den folgenden beiden GUIDS ein:

- {60DC8134-EBA5-43B8-BCC9-BB4BC16C2548} –> steht für ein WPF-Projekt

- {FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} –> steht für Windows C#

Der fertige Eintrag schaut dann so aus:

<ProjectTypeGuids>{60DC8134-EBA5-43B8-BCC9-BB4BC16C2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>

Step05

Jetzt speichert man die Änderungen in der Projektdatei ab und öffnet das Projekt einfach wieder mit Expression Blend oder Visual Studio. In Expression Blend 3 wird nun auch wieder für eine WPF-Datei des Designer-Workspace angezeigt.

Step06

HTH

TOM_MUE

Labels: , ,

1.21.2008

Werte von Windows Forms Controls über "Command-ToolWindow" abfragen oder setzen

Beim Debuggen einer Windows Forms Anwendung,
kann man über das Command Tool-Window (Befehlsfenster) die Werte einzelner Controls die sich auf der zu debuggenden Form befinden mit einfachen Befehlen abfragen. Wird der Code der Windows Form mit dem Debugger schrittweise (F10) durchlaufen, kann man im „Command Tool-Window“ (CTRL + ALT + A) mit dem Befehl „immed“ die Eigenschaften der Controls, die sich auf der Windows Form befinden, abfragen. In meinem Beispiel gibt es auf der Windows Form ein TextBox-Control mit dem Namen „MyTextBox“. Von dieser TextBox kann man nun beim debuggen im „Command Tool-Window“ mit „this.MyTextBox.Text“ den Text der TextBox abfragen oder mit „this.MyTextBox.Text = „TOM_MUE“ einen neuen Text zur Laufzeit setzen. Da man während des Debuggen nur den Code in Visual Studio und nicht die aktuellen Werte der einzelnen Controls in der gestarteten Form sehen kann (die Form wird beim Debuggen nicht neu gezeichnet), ist diese Möglichkeit die aktuellen Werte über das Command Tool-Window der  einzelnen Controls abzufragen oder neu zu setzen ein sehr großer Vorteil.

CommandToolWindow

HTH
TOM_MUE

Labels: , , ,

1.20.2008

Visual Studio Tricks: Bookmark Text in FindResults / Text im Output Window

Wie es der Zufall es so will, findet man oft die kleinen feinen Tricks per Zufall. So auch mein heutiger Trick.

Mit der Zeit wächst der Textumfang (Code-Text) jedes Projektes. Beim Finden von Text oder auch Textsegmenten unterstützt die Suche von Visual Studio erheblich.Immer wieder kommt es aber vor, dass man Das was man sucht, nicht genau spezifizieren kann so das viele Textzeilen im "Find Results-ToolWindow" angezeigt werden können. Dabei kann immer öfter der Überblick bei den Suchergebnissen verloren gehen. Durch Zufall habe ich herausgefunden das man ähnlich wie im Code-Editor auch imFind Results-ToolWindow oder aber auch im Output-ToolWindow Bookmarks setzen kann. Um diese Bookmarks im "Find Results-ToolWindow" oder im "Output-ToolWindow"zu setzen, kann man wie folgt vorgehen:

  1. Öffnen Sie mit der Tastenkombination Strg + Shift + F die Suche in der kompletten aktuell geladenen Solution. Geben Sie das zu suchende Wort ein. In meinem Fall suche ich nach EnvDTE.


    Visual Studio zeigt Ihnen nun im "Find Results-ToolWindow" die Codezeilen an, in denen das Wort EnvDTE gefunden wurde. Da ich (natürlich für dieses Beispiel mit Absicht)im Such-Dialog nicht explizit angegeben habe das NUR nach dem ganzen Wort EnvDTE gesucht werden soll, wird mir auch das Ergebnis für EnvDTE80 angezeigt.


  2. Mein erster Versuch war alle Ergebnisse von Hand zu markieren, die meinen nachfolgenden Suchkriterien entsprechen. Ich wollte mir alle Zeilen markieren in denen die Worte "using EnvDTE" und "using EnvDTE80" vorkommen. So wie im Code-Editor kann ich aber keinen Multiselect auf unterschiedliche Ergebniszeilen im "Find Results-ToolWindow" ausführen.

  3. Setzen Sie nun den Fokus mit der Maus in das von Visual Studio angezeigte "Find Results-ToolWindow" und rufen Sie den Find-Dialog mit der Tastenkombination Strg + F auf.geben Sie hier nun genau an was sie im "Find Results-ToolWindow" finden wollen.


    Ich habe zur Suche der beiden Wörter EnvDTE und EnvDTE80 in Verbindung mit dem Wörtchen using die Regular Expressions verwendet.Nun könnte ich einfach Stück für Stück mit "Find Next" jede einzelne Stelle selektieren die meine gesuchten Wortkombinationen enthält.Als ich aber gesehen habe, das der Button "Bookmark All" anwählbar ist, bekam ich von Visual Studio mit einem Klick auf den Button dasfolgende Ergebnis im "Find Results ToolWindow" angezeigt:

    Wie ich finde (ich möchte hier nicht zu meiner Farbwahl überreden ) ist das Ergebnis doch viel besser überschaubarer. Es ist auch möglich die Bookmarks wieder zu entfehrnen. Man muss nur das "Bookmarks-ToolWindow" öffnen. Dann findet man auch die Bookmarks wieder. Zwar ohne Text aber man kann sie entfernen und muss für eine erneute Markierund die Suche über die Solution nicht noch einmal anstoßen. Dieser Trick gilt übrigens für Visual Studio 2005 und 2008.


    HTH
    TOM_MUE

Labels: , ,