Wie erstellt man dynamische Dateneingabeformulare in einer WPF-Anwendung?

8

Ich plane eine WPF-Anwendung, die

wird
  • in der Lage sein, dynamische Dateneingabeformulare zu erstellen (dh das Formular ruft die anzuzeigenden Felder, ihre Reihenfolge usw. aus den Daten in der Datenbank ab, nicht vom XAML)
  • Verwenden Sie nach Möglichkeit das MVVM-Muster

Hier ist, wie ich vorgehen möchte: In einer Kundendateneingabeansicht würde ich den Datenkontext einstellen:

%Vor%

und fügen Sie dann ein Element in meinem XAML als Platzhalter für das Formular ein:

%Vor%

Dann möchte ich in meinem ModelView keine statischen Eigenschaften haben, aber ich möchte das XAML als ein erstelltes HTML-Steuerelement in ASP.NET auf diese Weise erstellen:

%Vor%

und auf diese Weise erstellen Sie das Grid basierend auf der Sammlung von Daten (Vorname, Nachname) und Metadaten (Feldbezeichnung, Feldname, Feldhilfetext, Feldanzeigeordnung usw.), die das ViewModel aus dem Model.

  • Hat jemand eine WPF-Anwendung erstellt, die auf diese Weise dynamische Formulare erstellen kann?
  • haben Sie das MVVM-Muster verwendet?
  • ist es möglich, das MVVM-Muster auf diese Weise zu verwenden, oder setzt das MVVM-Muster statische Felder im View-Modell voraus, die direkt an statische Elemente in View gebunden sind?
Edward Tanguay 24.04.2009, 13:46
quelle

2 Antworten

7

Sie müssen Datenvorlagen für die verschiedenen Felddatentypen schreiben, damit WPF die Art der Anzeige Ihrer Daten abhängig von ihrem Typ auswählt. etwas von diesem Format:

HINWEIS: Dies ist nicht WPF nur Pseudocode

%Vor%

Es muss kein primitiver Typ sein. Dies kann ein Email , DateApproved oder sogar ein Url sein. z.B.

%Vor%

.. etc ...

Aktualisieren

Sehen Sie sich dieses WPF Dynamic UI-Beispiel auf MSDN an: Dynamische Dateneingabe mit WPF und LINQ

    
Soni Ali 24.04.2009, 13:56
quelle
1

Sie müssen für jeden Feldtyp ein DataTemplate einrichten, zB Date, String, Bool. Dadurch wird festgelegt, wie jedes Feld angezeigt wird.

Sie könnten dann die Spalten für eine Datenbankabfrage verwenden, um eine Liste von Objekten zu generieren und sie in ein ItemsControl zu legen.

%Vor%

Jedes Element im Elementsteuerelement wird basierend auf dem DataTemplate für diesen Typ angezeigt.

Innerhalb von ColumnDef können Sie Reflection verwenden, um das Datenobjekt mit Änderungen von den UI-Steuerelementen zu aktualisieren. Sie können die Änderungen dann auf die Datenbanken anwenden, wenn der Benutzer speichert.

    
Steven 24.04.2009 14:14
quelle

Tags und Links