Für diejenigen von Ihnen, die Expression Blend sowie Visual Studio in Ihren realen Projekten verwenden, bitte helfen Sie mir zu verstehen, wie Sie Blend und Visual Studio in Ihren täglichen Entwicklungs- / Designaufgaben verwenden , hier ist ein echtes Szenario:
Ich habe die folgende einfache WPF-Anwendung in Visual Studio erstellt. zeigt eine Liste von Kundenobjekten mit einem DataTemplate , die die Kunden in einfachen orangefarbenen Feldern anzeigt.
Ich möchte jetzt mithilfe von Expression Blend ein wenig Schwung in diese DataTemplate einfügen.
Ich öffne das Projekt in Expression Blend und denke, dass ich die orangefarbenen Kästchen sehen werde, mit denen ich die Farbe ändern kann, erstelle eine Animation, wenn ich die Maus über sie drehe, verändere sie usw. Alles, was ich in Expression Blend sehe, ist jedoch eine vollständig leere Box .
So verstehe ich:
XAML:
%Vor%Hinterer Code:
%Vor%Ich habe das gerade herausgefunden, also erlauben Sie mir, meine eigene Frage zu beantworten.
Ich las Laurents Bugnion-Artikel zu diesem Thema und es stellte sich heraus, dass ich nur zwicken musste Der obige Code, damit ich die Daten aus meinem ViewModel in der Expression Blend-GUI sehen konnte und in der Lage war, das DataTemplate in Blend zu bearbeiten, zu speichern und dann in Visual Studio weiter zu bearbeiten.
Grundsätzlich sind die Änderungen: (1) Entfernen Sie die DataContext-Anweisung aus dem Code dahinter, (2) fügen Sie den "lokalen" Namespace in XAML hinzu, (3) definieren Sie einen lokalen Datenprovider in XAML ("TheDataProvider"), (4 ) binden Sie direkt an die ListBox.
Hier ist der Code, der in Expression Blend und Visual Studio vollständig funktioniert:
XAML:
%Vor%Hinterer Code:
%Vor%Ich habe einen Blogbeitrag zu diesem Thema: Ссылка
In meinem Beitrag geht es darum, Daten in blend anzuzeigen, ohne diese Daten zur Laufzeit anzeigen oder erstellen zu müssen.
Wenn Sie möchten, dass Blend und Visual Studio sehen, was der Datenkontext nur im Entwurfsmodus hat, kann dies mit den Debugoptionen auf der Seite definiert werden. Sagen wir zum Beispiel, dass meine Seite (in Code-Behind) ihren Datenkontext an MainVM in meinem Namespace WP8TestBed bindet, indem ich diese Information auf den Attributen der Hauptseite als d: DataContext informiere, sie wird nur während der Entwurfszeit verwendet (ich kann mit ihr binden) die Assistenten) und erstellt auch keine neue Instanz des Ansichtsmodells zur Laufzeit.
Hier ist das Beispiel, alle diese Namespaces werden benötigt (d, mc und das lokale, wo mein ViewModel (MainVM) lebt):
%Vor%Tags und Links wpf c# expression-blend