2009-03-22 4 views
5

Я строю бизнес-приложение в Silverlight и нуждаюсь в том, чтобы заставить пользователя редактировать два значения .NET TimeSpan. Первое - это время суток (относительно полуночи), а другое - продолжительность. В настоящее время я использую два TextBox, отформатированных как hh: mm. Это довольно просто, но это определенно может быть улучшено. Я наблюдал за людьми, использующими приложение, и в то время как у некоторых нет проблем, быстро вступающих во времена, другие люди борются.Каков самый интуитивный, удобный способ ввода времени суток или продолжительности?

Учитывая, что я работаю в Silverlight2, что бы вы увидели в качестве идеального пользовательского элемента управления, который легко позволяет визуализировать и редактировать эти два TimeSpans?

Чтобы сделать все более трудным, пользовательский интерфейс должен позволять в любое время дня выбирать с точностью до минуты, но подчеркивать время в обычный рабочий день (например, с 8:00 до 17:00). Некоторые пользователи обычно входят в 2:00 (утра), когда они действительно означают 14:00.

В моем приложении я стремлюсь к выравниванию времени и продолжительности до 5-минутных интервалов. В некотором роде, это приложение похоже на приложение для бронирования номеров, где люди указывают, когда и как долго они хотят комнату.

ответ

5

В одном из моих веб-приложений я использовал слайдер с двумя ручками.

Пример:

|.........Y-----------------Y...| 
     5AM    8PM 

Конечно, мне не нужно, как высокой точности, как вы, но я считаю, что с немного более длинными интервалами слайдера 5мин будет возможно.

Чтобы подчеркнуть нормальный рабочий день, вы можете цвет фона слайдера разного цвета для обычного рабочего дня. Или сделайте обработчики «привязкой» к началу и концу обычного рабочего дня.

1

Возможно, это зависит от того, насколько точны ваши данные и насколько они могут быть. Если это не нужно, чтобы быть совершенно точным, и это не меняется много, вы могли бы сделать что-то вроде

Task was performed at [select start time...] o'clock for [select duration...] 

где [выбрать время начала ...] является спуском с каждым часом и [выбрать продолжительность ...] является раскрывающимся списком с общими сценариями для того, что вы отслеживаете как «30 минут», «1 час», «2 часа»

Если это необходимо для гибкости, возможно, просто перейдите к структуре предложения и замените выпадающие файлы с текстовыми полями позволят понять всем пользователям в первый раз.

+0

Хорошая точка с точностью – geofftnz

1

Получить последнюю Sliverlight Toolkit и использовать один из нового времени ориентированного управления

+0

Хорошее предложение - с которым я работаю пару месяцев назад. – geofftnz

1

Посмотрите на перспективах, возможно, он использует выпадающие, что по умолчанию здравомыслящей половины часа (мне так или иначе;) и выборы могут быть отредактированы вручную после чего, если требуется более высокая точность. Продолжительность также следует, когда время начала изменяется, а по умолчанию - час или что-то еще.

Я использовал текстовые поля в старом веб-приложении до того, как вы, с добавленной возможностью двойного щелчка по ним, чтобы отобразить виджет быстрого выбора, подобный приведенному выше образцу Outlook. Возможно, кнопка или другая магия Silverlight могут улучшить это.

Вертикальная линия времени, подобная календарному дню в Outlook, где вы можете перетащить верхнюю и нижнюю часть «окна» встречи, является для меня самым интуитивным или, по крайней мере, самым быстрым способом разместить и настроить бронирование. Возможно, если он заполняется тем, что занимает час или около того, легко перетаскивается, чтобы изменить время начала - с изменением размера сверху и снизу, чтобы изменить продолжительность.

1

Расширение на то, что сказал Энтони, выпуск Silverlight Toolkit в марте 2009 года включает TimePicker & Элементы управления TimeUpDown. Вы можете увидеть живую демонстрацию TimeUpDown и TimePicker с 2 всплывающих окнами на: http://silverlight.codeplex.com/Wiki/View.aspx?title=Silverlight%20Toolkit%20Overview%20Part%201#TimeUpDown

Я На самом деле принадлежу установить функции и API для этого элемента управления, поэтому я очень хорошо знаком в настоящее время с тем, что лучшей формой для ввода времени , Существует целый список лучших практик, о которых мы можем поговорить для ввода времени. Все из них в настоящее время легко обнаруживаются в элементах управления.

По каким-то понятиям мы должны были внедрять инновации (например, функция Time Intellisense), но в основном мы использовали истинные концепции, проверенные временем. (не предназначен для каламбур)

Однако в качестве части не-целей для этих элементов управления для v1 мы решили не поддерживать диапазоны времени. Если вы считаете, что временные диапазоны - это то, что мы должны поддерживать, не стесняйтесь предлагать это на codeplex: http://silverlight.codeplex.com/WorkItem/Create.aspx Мы активно расставляем приоритеты на основе количества голосов и пользовательских сценариев, вызываемых в проблемах.

На данный момент я предлагаю вам использовать только 2 TimePickers. Продвинутые визуализации (например, многопозиционная линейка или многослойный слайдер) - это один из способов ввода временного диапазона, но у вас должна быть прочная глобальная система ввода текста для резервного варианта.

+0

Спасибо за вклад Джастин ... Я на самом деле использую сборщик инструментов March09 Toolkit. Я создал новую функцию для контроля продолжительности: http://silverlight.codeplex.com/WorkItem/View.aspx?WorkItemId=2392 – geofftnz

+0

Вы не можете одурачить меня. Этот каламбур был полностью задуман. – MojoFilter

+0

Где находится документация на TimePicker? Например, каков тип данных TimePicker.Value? Я привязываю его к TimeSpan или DateTime. –

1

Это прекрасное время, чтобы спросить, какую задачу пытаются выполнить ваши пользователи. На основе этого вы можете создать производительность своей системы. В Outlook, например, люди обычно вводят время, потому что они пытаются запланировать встречу, поэтому вы можете легко устранить двусмысленность «2» или «2:00» в среднем на 2 часа, поскольку очень немногие пользователи пытаются планировать встречи на уровне 2 есть. Это похоже на ваше приложение.

Если вы посмотрите на своих пользователей, они, скорее всего, также планируют типичные времена - их следует легко указать в вашем интерфейсе. Например, если большинство встреч длится 50 минут, это должно быть очень заметным, возможно, кнопкой или другим одним нажатием кнопки.

Я бы не рекомендовал изобретать новый виджет ввода. Чем более стандартным является ваш инструмент ввода, тем меньше ваших пользователей приходится думать при использовании вашего продукта. Сосредоточьтесь на умствиях внутри своей логики, выяснив (и показывая пользователю) то, что, по вашему мнению, они просят.

+0

Спасибо Алекс, ты в значительной степени ударил ноготь по голове. Я закончил тем, что запустил идею слайдера в пользу элементов управления временем в последнем Silverlight Toolkit. Они позволяют вводить время как простой текст и будут разбирать почти все. Тем не менее, я в настоящее время пишу код для импорта дат и времени из нашей ежедневной системы расписания DailyWTF. – geofftnz