Laden...

WPF - dynamische Formulare?

Erstellt von winmike vor 13 Jahren Letzter Beitrag vor 13 Jahren 3.975 Views
winmike Themenstarter:in
173 Beiträge seit 2009
vor 13 Jahren
WPF - dynamische Formulare?

Hallo

Hat sich jemand schon mal mit dynamischen Formularen beschäftigt?

Es geht um folgendes:
Formular, wird von oben nach unten ausgefüllt. Je nachdem was der Kunde auswählt (z.B. Radio oder checkbox) soll der Teil darunter dynamisch angepasst werden.

Weiß jemand, obs da für WPF schon was fertig gibt? Ich würde die Formularlogik auch in XML / XAML machen. Aber vielleicht gibts da ja schon was 😉

Es geht drum, dass so wenig wie möglich im Programm angegriffen werden muss, wenn sich die Abfragelogik ändert oder auch der Inhalt des Formulars.

Danke
LG

5.742 Beiträge seit 2007
vor 13 Jahren

Hallo winmike,

Hat sich jemand schon mal mit dynamischen Formularen beschäftigt?

dafür ist die WPF wie gemacht.

Lies dich mal in das Thema "DataTemplates" und "DataBinding" ein.
Kombiniert mit z.B. dem MVVM-Pattern ergibt das eine sehr leistungsfähige Möglichkeit.

winmike Themenstarter:in
173 Beiträge seit 2009
vor 13 Jahren

Hi winSharp93

Mir geht es weniger um die Darstellung. Eher drum: Wie kann ich so
Entscheidungsformulare abbilden? Ich suche sowas wie (Pseudecode)


<decision>
  <if element="radioGeschlecht" value="männlich">
    <formcontent>männliche fragen</formcontent>
  </if>

  <if element="radioGeschlecht" value="weiblich">
    <formcontent>weibliche fragen</formcontent>
  </if>
</decision>

Und WPF soll das dann irgendwie darstellen 😉 Das irgendwie will ich halt nach Möglichkeit nicht selbst machen 😄 Da es eigentlich ja fast ein Alltagsproblem ist dachte ich, es muss da was geben

5.742 Beiträge seit 2007
vor 13 Jahren

Wie gesagt: Da hilft das MVVM-Pattern ungemein.
Stelle einfach eine Property bereit, die in Abhängig von einem Boolean (IsMale oder so) z.B. entweder ein MaleVM oder ein FemaleVM mit dein eigentlichen Fragen zurückgibt.
Dieses kannst du dann in einem ContentPresenter mithilfe eines _DataTemplate_s darstellen.

winmike Themenstarter:in
173 Beiträge seit 2009
vor 13 Jahren

Hmm. Aber wie kann ich so einen Entscheidungsbaum wie in meinem XML Beispiel bauen? Die Darstellung selbst macht mir kein Kopfzerbrechen. Sowas wie in WF wäre fein

742 Beiträge seit 2005
vor 13 Jahren

Das ist kein Darstellungsproblem und auch kein richtiges WPF Problem, da geht es erstmal nur um Code.

Ich würde das auch mit dem MVVM Pattern lösen. Das ViewModel hat eine Liste von Fragen für jede "Ebene", also, z.B:

Brands
Models
Colors

und dazu jeweils ein Property:
SelectedBrand
SelectedModel
SelectedColor

alle Properties werden an 3 ComboBoxen gebunden...

Wenn sich der Wert eines SelectedXXX Properties ändert, füllst du entsprechend die Listen mit den Fragen der nächsten Ebene:

Sollte sich das Property SelectedBrand ändern füllst du die Fragen der nächsten Ebene, d.h. du lädst alle Modell dieser Marke und wenn das Model ausgewählt wurde, lädst du alle Farben, die für dieses Modell verfügbar sind.

151 Beiträge seit 2009
vor 13 Jahren

Hi,

ich denk, die Frage geht dahin, ob es sowas schon fertig gibt. Antwort NEIN.
In WPF gibt es kein Control, was zaubern kann 😃

Du solltest dir, wie die anderen schon schreiben, Gedanken zur Umsetzung machen und dann damit anfangen. Was hier geschrieben steht hört sich doch brauchbar an.
Falls du Schwierigkeiten mit MVVM solltest du diesbezüglich konkrete Fragen stellen, bei denen dir dann auch konkret geholfen werden kann.

Hmm. Aber wie kann ich so einen Entscheidungsbaum wie in meinem XML Beispiel bauen?

Du bindest eben gegen deinen Radiobutton und schaust ob true oder false und lädst dementsprechend den Content.

Grüßle
Jéré

winmike Themenstarter:in
173 Beiträge seit 2009
vor 13 Jahren

Hi

MVVM mit Composite Library hab ich eh schon verwendet. Das ist wie gesagt nicht das Problem

Ich glaube ich habe meine Frage schlecht gestellt und im falschen Forum 😉
Ich würde es jetzt so stellen: Wie kann ich einen dynamischen Fragebogen erstellen, welcher auch zur Laufzeit / deploytime noch per XML o.ä. geändert werden kann?

Da in .NET ja fast alles auf XAML basiert und man das auch zur Laufzeit einlesen kann, dachte ich, dass es da schon was gibt. Ich will eine Exe - und die soll je nach XAML File dann die Fragen stellen und als Output z.B. wieder eine XML Datei ausspucken.

Schade dass es da nichts gibt 😦 Werde mich dann wohl selbst ans Werk machen müssen

Trotzdem Danke
LG

1.820 Beiträge seit 2005
vor 13 Jahren

Hallo!

@winmike:
In WPF kann man mithilfe von DataTriggern in XAML einfache Aktionen durchführen.
Auf diese Weise ist es damit z.B. möglich, je nach Wert einer Checkbox einen bestimmten Bereich ein- und einen anderen auszublenden, und zwar ganz ohne Code.

Nobody is perfect. I'm sad, i'm not nobody 🙁