none
anderen content anhand von ccheckbox anzeigen lassen RRS feed

  • Frage

  • Hallo,

    ich bins mal wieder :D.

    ich habe ein formular, an dem sich der benutzer anmelden kann. Der Benutzer kommt erst weiter wenn er eine von 4 checkboxen anklickt die jeweils anderen content zeigen im weiteren verlauf der anmeldung.

    Zur zeit funktioniert es, es ist aber sehr unsauber gecoded und ich überlege mir gerade den teil neu zu schreiben. Ich mache es derzeit mit Visibility (einfach ein und aus schalten je Checkbox die angeklickt wurde).

    Hat jemand einen Lösungsvorschlag sodass ich das iwie sauberer lösen könnte?

    Ein Lösungsweg von mir wäre evtl über UserControl und ContentControls aber ich bräuchte immer noch einen einzigen ViewModel und ich weiss nicht wie ich das realisieren soll.

    Ich hoffe ihr könnt mir helfen :)

    LG

    Dienstag, 15. Januar 2019 06:49

Antworten

  • Hi Micha,
    die Lösung wäre ein MultiValueConverter.

    In der Oberfläche bindest Du die Visibility-Eigenschaft an mehrere Eigenschaften im ViewModel (z.B. an die auch an die CheckBoxes gebundenen Eigenschaften). Diese Mehrfachbindung wird dann in einem MultiValueConverter in eine Visibility umgewandelt. Über Converter-Parameter kann man den Converter so steuern, dass er in Abhängigkeit von den booleaschen Werten die Sichtbarkeit ermittelt.


    --
    Viele Grüsse
    Peter Fleischer (ehem. MVP für Developer Technologies)
    Meine Homepage mit Tipps und Tricks

    Dienstag, 15. Januar 2019 09:43

Alle Antworten

  • Hi Micha,
    aus den von Dir genutzten Begriffen vermute ich, dass es sich um eine WPF-Anwendung handelt. In diesem Fall sind die CheckBoxes an booleasche Eigenschaften des ViewModels gebunden. Über einen MultiValueConverter kann dann die Visible-Eigenschaft anderer Elemente gesetzt werden.

    Versuche bitte, etwas genauer Dein Problem zu beschreiben (auch mit einer verständlichen deutschen Rechtschreibung).


    --
    Viele Grüsse
    Peter Fleischer (ehem. MVP für Developer Technologies)
    Meine Homepage mit Tipps und Tricks

    Dienstag, 15. Januar 2019 07:03
  • Hallo Peter,

    ja, das habe ich auch genau so gemacht. Ich habe die CheckBoxes an meinen ViewModel gebunden und ich steuere von dort aus die Visibility-Eigenschaft der Controls.

    Das scheint für mich aber etwas unsauber, da ich mehrere Controls (4 verschiedene "Seiten", für jede CheckBox jeweils eine) aufeinander habe und ich leicht durcheinander komme, wenn es darum geht was zu wem gehört.

    Meine Frage war, ob es einen anderen Lösungsvorschlag gäbe das ganze zu realisieren.
    also-> Wie kann ich anhand von einer/mehrere CheckBox/en verschiedene Controls ein und ausblenden, die alle mit dem selben ViewModel verknüpft sind.

    Als Beispiel : in Grid.Row 5 sind 4 Checkboxen. Ab Grid.Row 6 ist der "dynamische" Content (der in meinem Fall mit Visibility gelöst ist). Je nach dem welche CheckBox ich anklicke kommen andere Controls.

    Ich hoffe ich konnte es ein wenig mehr ausformulieren. 

    LG

    Dienstag, 15. Januar 2019 07:12
  • Hi Micha,
    die Lösung wäre ein MultiValueConverter.

    In der Oberfläche bindest Du die Visibility-Eigenschaft an mehrere Eigenschaften im ViewModel (z.B. an die auch an die CheckBoxes gebundenen Eigenschaften). Diese Mehrfachbindung wird dann in einem MultiValueConverter in eine Visibility umgewandelt. Über Converter-Parameter kann man den Converter so steuern, dass er in Abhängigkeit von den booleaschen Werten die Sichtbarkeit ermittelt.


    --
    Viele Grüsse
    Peter Fleischer (ehem. MVP für Developer Technologies)
    Meine Homepage mit Tipps und Tricks

    Dienstag, 15. Januar 2019 09:43