WPF: Wie kann ich das erstellen von sample-Daten in design-Modus?
Ich würde gerne zum erstellen von sample-Daten, die nur im design-Modus (Wenn das WPF-Fenster angezeigt wird in der Visual Studio WPF Designer oder Expression Blend). Ich versuchte dies:
public MainWindow()
{
InitializeComponent();
if (DesignerProperties.GetIsInDesignMode(this))
{
DataContext = new Person() { Name = "Harry" };
}
}
Es scheint, dass die designer nicht an den Konstruktor der Fenster-Klasse. Ich benötige zum erstellen der Beispiel-Daten in C# - code, weil Sie komplizierter zu instanziieren. Irgendwelche Ideen?
- galasoft.ch/mydotnet/articles/article-2007091401.html
- Mit dem link von @sixlettervariables ich es geschafft, es funktioniert durch die Verwendung von code. Der Schlüssel war, um eine Ressource zu erstellen, die in XAML - Instanz des benutzerdefinierten Datenprovider, mit parameterlosen Konstruktor ausfüllen meiner Daten.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie die Einstellung der DataContext im XAML-Code, entweder direkt oder mit einer Bindung, Sie vermeiden das Problem der Konstruktor überspringen. Die neueren Versionen der tools unterstützen auch die Einstellung d:DataContext, der nur geltend gemacht werden, die zur design-time DataContext. Wenn Ihr Instanziierung kann nicht getan werden direkt in XAML-Code (z.B. Konstruktor-Parameter) können Sie einfach erklären, ein get-Eigenschaft im Hauptfenster.xaml.cs instanziiert und kehren Sie Ihre design-Daten-Instanz. Halten Sie die gesamten object creation in die get halten es erstellt zur Laufzeit, weil es nie aufgerufen werden.
Dann in XAML können Sie binden d:DataContext für die Fenster, um die neue Eigenschaft.
Gibt es viele andere Möglichkeiten aber diese ist die am nächsten an der Benutzeroberfläche sind in der Regel die einfachste, um in bestehenden code. Josh Smith hat kürzlich eine gute übersicht über die verschiedenen Optionen: Design-time-Daten noch Daten
Jetzt bin ich mit der design-Zeit-Unterstützung von Visual Studio 2010 und Expression Blend 4. Diese neue Funktion erfüllt die meisten meiner Anforderungen.
Wie dies funktioniert, zeigt das BookLibrary Beispielanwendung der WPF Application Framework (WAF). Laden Sie bitte die .Net4 version von WAF.