2012-04-11 5 views
0

In meiner WPF-Anwendung gibt der Benutzer eine GPS-Koordinaten im Format von Grad: Minuten: Sekunden als Dezimalbruch von Minuten.So konvertieren Sie mehrere Textfelder in einen Wert

So 60 ° 30' 45" 60 ° 30.750' eingegeben werden würde.

ich es dann speichern als reine Dezimalzahl so das obige Beispiel als 60,5125 gespeichert würde.

Die Idee war, Die Benutzer würden also die Eingabe nicht in drei verschiedene Textboxen zerlegen, eine für Grad, eine andere für Minuten und eine für die fraktionalen Sekunden.Es ist ein bisschen schlimm, dass eine der Zahlen in zwei Textfelder aufgeteilt ist, aber wenn sie es haben um die ganze Zahl in der Angst vor all dem Punkt oder Komma Verwirrung und dass sie vermasseln könnten.

So Eine Sache, von der ich dachte, dass sie funktionieren könnte, war ein IMultiValueConverter, aber es scheint nur mit MultiBindings zu funktionieren, was ich hier nicht mache.

Momentan ist meine Lösung, an verschiedene Eigenschaften zu binden und alle Berechnungen im Code auszuführen, aber ich bin nicht wirklich glücklich über das Bruchbit. Ich nehme 3 gebrochene Buchstaben an, aber wenn sie nur 7 eingeben und 0,700 annehmen, aber 0,007 erhalten, dachte ich, dass ich ein String-Format-Bit machen müsste.

Gibt es eine bessere Lösung da draußen? Kann ich MultiValueConverter für so etwas verwenden?

+0

Ich würde empfehlen, bei einem Textfeld zu bleiben und lassen Sie das Programm den Wert _intelligently_ analysieren, ohne den Benutzer auf nur ein Format zu beschränken. Suchen Sie nach '' '' '' '' 'und gehen Sie entsprechend vor. (Sie können das Leerzeichen anstelle von' ° 'akzeptieren.) – ja72

+0

@ ja72 Ich hatte es bereits mit zwei Textboxen ergänzt, möchte aber vollständig geführt werden. Wenn sie nicht sicher sind Wie Sie etwas tun können, tun sie das überhaupt nicht –

+0

@Ingo: Es gibt andere Möglichkeiten, Benutzer zu führen: Zum Beispiel ein Wasserzeichen im Textfeld mit einem Beispiel für die erwartete Eingabe oder durch Aufklappen eines Mini-Führers beim Fokussieren ist auf der Textbox.Oder vielleicht sogar Auto-Vervollständigung einer Art. Punkt ist, kann es sein, dass Ihre Benutzer nach der Lösung fragen, die sie * am besten * ihr Problem lösen. Es wäre klug, das Problem vollständig als zu verstehen sie könnten eine viel effektivere Art sein, sie zu lösen –

Antwort

2

Sie könnten versuchen, eine MaskedTextBox zu verwenden, z. B. die aus der Extended WPF Toolkit.

+0

Ich benutze bereits Rubenhak TextBoxMaskBehaviour. Vielleicht ist der, den du erwähnst, mächtiger. –