Pergunta

Eu estou construindo um aplicativo de linha de negócios no Silverlight e necessidade de obter o usuário editar dois valores .NET TimeSpan. Uma é uma hora do dia (em relação à meia-noite) e a outra é uma duração. Atualmente estou usando duas caixas de texto, formatado como hh: mm. Isto é bastante simples, mas poderia certamente ser melhorado. Eu tenho pessoas observados usando o aplicativo e enquanto alguns não têm nenhum problema rapidamente vezes entram, outras pessoas luta.

Dado que eu estou trabalhando em Silverlight2, o que você vê como o controle personalizado perfeito que facilmente permitem visualizar e editar esses dois TimeSpans?

Para tornar as coisas mais difíceis, a interface do usuário deve permitir a qualquer hora do dia para ser selecionado com precisão até o último minuto, mas enfatizam vezes no mesmo dia normal de trabalho (por exemplo: 08h00 - 17:00). Alguns usuários tendem a entrar 2:00 (am) quando eles realmente querem dizer 2:00.

Em meu aplicativo, eu estou tendendo para alinhar os tempos e durações de intervalos de 5 minutos. Como um pouco de fundo, este aplicativo é semelhante a um aplicativo de reserva de quarto onde as pessoas especificar quando e por quanto tempo eles querem um espaço para.

Foi útil?

Solução

Em uma das minhas aplicações web eu usei um controle deslizante com 2 alças.

Exemplo:

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

É claro que eu não precisava de alta precisão como você faz, mas eu acredito que com um pouco mais intervalos de 5min deslizante seria possível.

Para enfatizar dia de trabalho normal, você poderia cor de fundo da barra de cor diferente para jornada de trabalho normal. Ou fazer manipuladores "Snap" para início e fim do dia de trabalho normal.

Outras dicas

Provavelmente depende de quão preciso você precisa seus dados e como variável que pode ser. Se ele não precisa ser perfeitamente precisos e não variam muito, você poderia fazer algo como

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

onde [escolha hora de início ...] é um menu suspenso com cada hora e [escolha duração ...] é um menu suspenso com cenários comuns para o que você está acompanhando, como "30 minutos", "1 hora", " 2 horas "

Se ele precisa ser flexível talvez apenas indo com a estrutura da frase e substituindo os pulldowns com caixas de texto deixaria claro para todos os usuários primeira vez.

Receba as últimas Sliverlight Toolkit e usar um dos controles orientados novo Time

Olhe para Outlook talvez, ele usa menus suspensos que tem como padrão horas e meia sãs (para mim;) e as seleções podem ser editados à mão depois, se maior precisão é procurado. A duração também segue quando a hora de início for alterado, e o padrão é uma hora ou algo assim.

Eu usei caixas de texto em um aplicativo web velho antes apenas como você, com a opção adicional de um clique duplo-los para abrir um widget de seleção rápida como o acima Amostra Outlook. Talvez um botão ou alguma outra mágica Silverlight pode melhorar isso.

Um tempo-linha vertical como um dia de calendário no Outlook onde você pode arrastar o superior e inferior da "caixa" de uma reunião é para mim a forma mais instuitive ou pelo menos mais rápida de lugar e ajustar a reserva. Talvez se ele é pré-preenchido com uma que se estende por uma hora ou assim, facilmente arrastado para alterar a hora de início -. Com a parte superior e inferior redimensionável para alterar a duração

Expandindo o que Anthony disse, Silverlight Toolkit março 2009 versão incluem TimePicker & TimeUpDown controles. Você pode ver uma demonstração ao vivo de TimeUpDown e TimePicker com 2 popups em: http: //silverlight.codeplex. com / Wiki / View.aspx? title = Silverlight% 20Toolkit% 20Overview% 20Part% 201 # TimeUpDown

Na verdade, eu possuía o conjunto de recursos e API para esse controle, por isso estou muito bem familiarizados hoje em dia com o que é a melhor forma de tempo de entrada. Há toda uma lista de melhores práticas que podemos falar para a entrada de tempo. Todos os que são atualmente facilmente encontrados nos controles.

Em alguns conceitos que tivemos de inovar (como o recurso "Time Intellisense"), mas principalmente que estávamos usando verdadeiros tempo testado conceitos. (Sem trocadilhos)

No entanto, como parte dos não-metas para esses controles para v1 decidimos não suporta intervalos de tempo. Se você sentir que intervalos de tempo é algo que devemos suportar nativamente, fique à vontade para sugerir este no CodePlex: http://silverlight.codeplex.com/WorkItem/Create.aspx Nós itens ativamente priorizar com base na quantidade de votos e cenários de usuários chamado na problemas.

Por enquanto, eu sugiro que você acabou de usar 2 TimePickers. visualizações avançadas (como uma régua selecione múltiplas ou um multi deslizante) são uma forma de fazer entrada de intervalo de tempo, mas você tem que ter um sistema de entrada de texto globalizado sólida para uma opção de recurso.

Este é um grande momento para perguntar o que tarefa seus usuários estão tentando realizar. Você pode criar o desempenho do seu sistema com base nesta. No Outlook, por exemplo, as pessoas costumam entrar no tempo, porque eles estão tentando agendar uma reunião - para que você possa facilmente disambiguate "2" ou "02:00" para 2:00 média, porque muito poucos usuários estão tentando agendar reuniões a 2 sou. Isso soa semelhante à sua aplicação.

Se você olhar para seus usuários, eles provavelmente também ser agendamento para tempos típicos - estes devem ser fáceis de especificar na sua interface. Por exemplo, se a maioria das reuniões são 50 minutos de duração, que deve ser muito saliente, talvez um botão ou outra opção de um clique.

Eu não recomendaria inventar um novo widget de entrada. O padrão mais a ferramenta de entrada, a menos que seus usuários tenham que pensar quando se utiliza o produto. Concentre-se no smarts dentro de sua lógica, descobrir (e mostrando o usuário) que você acha que eles estão pedindo.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top