2016-07-07 7 views
-2

Ich habe wirklich Schwierigkeiten, herauszufinden, wie WPF ComboBox funktioniert. Es gibt viele Beispiele online, aber keine scheinen über einen sehr häufigen Fall, ein Formular mit ComboBox und Save/Cancel-Tasten wie unten beschrieben zu gehen.WPF-Dialog Abbrechen - ein häufiges Szenario

Alles, was ich zu tun versuche, ist ein WPF-Formular mit einer einzigen ComboBox mit 2 Strings, sagen wir "A" und "B". Und 2 Tasten Speichern und Abbrechen.

Auf Abbrechen Schaltfläche klicken, neu ausgewählten Wert wird ignoriert. Wenn zum Beispiel beim Öffnen des Formulars ComboBox den Wert "A" anzeigt, wenn der Benutzer die Auswahl auf "B" ändert und auf "Abbrechen" klickt, wird das Formular erneut geöffnet, wobei "A" angezeigt wird.

Auf Speichern Schaltfläche klicken, ausgewählter Wert wird gespeichert. Wenn zum Beispiel Formular geöffnet wurde, zeigt ComboBox den Wert "A" und der Benutzer wählt "B" und drückt auf Speichern. Wenn Sie das Formular erneut öffnen, wird "B" angezeigt.

Ich habe keinen Code zur Verfügung gestellt, weil ich keine habe. Ich versuche nur ein Beispiel/Tutorial zu finden, das dieses Szenario für mein Lernen abdeckt.

UPDATE WPF, MVVM (oder nicht, unabhängig). Alles, was ich suche, ist ein guter Link, der ein solches Szenario abdeckt. Alles, was ich finde, sind minimalistisch und zeigen nur Combo in Form. Oder eine andere Version ist a) wählen Sie einen neuen Wert, b) erhalten Sie eine Bestätigung, dass Sie es tatsächlich auswählen möchten (natürlich ist das nur dumm). Fühlt sich seltsam für ein solches häufiges Szenario.

+0

Also, sind Sie in Ordnung mit dem Teil, der Daten an die Combobox und das ausgewählte Element bindet? Ist deine Frage nur auf das "Rückgängigmachen" der Auswahl, wenn es nicht gespeichert ist? Oder ist es beides? – Lapious

+0

MVVM oder nicht? Stört es auch nicht? – Jai

+1

Diese Seite eignet sich am besten für fokussiertere Fragen wie "Ich versuche, ** x ** zu tun, und ich habe dieses Problem ** y **". – code4life

Antwort

1

Nicht sicher, warum Sie hier ein Problem gesehen haben. Das einzig mögliche größte Problem ist wahrscheinlich, dass Sie denken, dass das Steuerelement so funktioniert, wie Sie es sich vorstellten (ohne dass Sie etwas tun) - Sie müssen eingeben, damit es sich so verhält, wie Sie es brauchen.

Jedes Mal, wenn Sie das Formular schließen, verwerfen Sie eine Instanz davon. Wenn Sie das Formular öffnen, erstellen Sie eine neue Instanz. Da es sich um eine brandneue Instanz handelt, wäre es dann nicht sinnvoll, dass sie genau das zeigt, was sie getan hat, genau wie beim ersten Mal, als sie geöffnet wurde?

Wenn Sie Informationen benötigen, die zwischen dem Schließen und dem Öffnen persistent sind, dann ist es so einfach wie das Speichern irgendwo, das nicht zerstört wird.

Für den Ereignishandler Click "speichern" kopieren Sie den Wert aus der Combobox an einen anderen Ort, wahrscheinlich ein Repository, ein statisches Singleton irgendwo oder Hauptfenster.

// e.g. static singleton 
MySingletonStorage.Instance.ComboBoxValue = myComboBox.Text; 

Dann im Konstruktor Ihres Formulars, einfach den Wert aus dem Speicher zurück.

myComboBox.Text = MySingletonStorage.Instance.ComboBoxValue;