2012-04-11 2 views
0

В моем приложении WPF пользователь вводит координаты GPS в формате градусов: Минуты: секунды в виде десятичной доли минут.Как преобразовать несколько текстовых полей в одно значение

Так 60 ° 30' 45" будут введены как 60 ° 30.750' .

я затем сохранить его в виде чистого десятичного числа так, приведенный выше пример будет храниться в 60.5125.

Идея была так что пользователи не будут испортить входные данные, которые будут установлены в трех разных текстовых блоках: один для градусов, другой для минут и один для дробных секунд. Немного плохо, что одно из чисел разделено на два текстовых поля, но если они чтобы набрать целое число, боятся всего путаницы в точке или запятой и что они могут испортиться.

So одна вещь, которая, как я думал, может работать, это IMultiValueConverter, но, похоже, она работает только с MultiBindings, чего я здесь не делаю.

В настоящее время мое решение связано с различными свойствами и выполняет все вычисления в коде, но я не очень доволен дробным битом. Я принимаю 3 дробных буквы, но если они вводят только 7 и принимают 0,700, но получают 0,007, я думал, что мне нужно будет сделать бит в формате строки.

Есть ли лучшее решение там. Могу ли я использовать MultiValueConverter для чего-то подобного?

+0

Я бы рекомендовал придерживаться одного текстового поля и позволить программе разобрать значение _intelligently_, не ограничивая пользователя только одним форматом. Ищите '' '' и '' 'действуйте соответственно. (Вы можете принять символ пробела вместо' ° ') – ja72

+0

@ ja72 Я уже вложил его в два текстовых поля, но они хотят, чтобы вас полностью направляли. Если они не уверены как делать то, что они вообще не будут делать. –

+0

@Ingo: Существуют и другие способы управления пользователями. Например, водяной знак в текстовом поле с примером ожидаемого ввода или выталкиванием мини-гида при фокусировке находится в текстовом поле или, возможно, даже при автозавершении какой-либо природы. Возможно, пользователи могут запросить решение, которое они считают лучшим решением своей проблемы. Было бы разумно полностью понять проблему они могут быть гораздо более эффективным способом его решения. –

ответ

2

Вы можете попробовать использовать MaskedTextBox, например, один из Extended WPF Toolkit.

+0

Я уже использую Rubenhak TextBoxMaskBehaviour. Возможно, тот, кого вы упомянули, более мощный. –

Смежные вопросы