Usuário com melhor resposta
Setar icones do objeto DatePicker

Pergunta
-
Pessoal, tenho um objeto DatePicker que quando eu clico nele exibe 2 botões, um de confirmação e outro para cancelar.
Como eu mudo a imagem desses botões e como eu faço para apagar o texto caso o usuário clique em cancelar?<toolkit:DatePicker x:Name="dpVencimento" Value="" Height="90" Margin="182,0,60,122" VerticalAlignment="Bottom" />
Sei que deve ser coisa simples, mas já estou batendo cabeça já um tempo para resolver isso.
Respostas
-
Olá Paulo,
A propriedade "Value" do DatePicker é do tipo "DateTime?" (Nullable<DateTime>), ou seja, basta você setar "null" que a data some.
O controle vem como padrão com a data do dia atual, então se quer iniciá-lo sem valor, apenas coloque no construtor de sua página, depois do InitializeComponent();
DatePicker.Value = null;
Se um usuário selecionar um valor, o DatePicker.Value receberá a data escolhida, mas se ele clicar em cancelar, nada será mudado (o evento ValueChanged nem é chamado). Esse é comportamento é correto por que o botão cancelar é para cancelar a mudança do usuário e não para "zerar" a data.
Caso você queria "zerar" um valor já existente de um DatePicker, eu sugiro você colocar um botão (faça um ícone de lixo ou algo assim) do lado do controle. No clique desse botão, chame um "DatePicker.Value = null" no seu code-behind ou mude o valor da propriedade com binding no DatePicker.Value para null caso esteja usando MVVM.
[]'s!
André Carlucci
- André Carlucci - Way2 Technology - twitter/andrecarlucci - andrecarlucci.com- Sugerido como Resposta Pedro LamasMVP quinta-feira, 3 de novembro de 2011 15:14
- Marcado como Resposta Fernando Figuera terça-feira, 13 de dezembro de 2011 16:31
Todas as Respostas
-
-
Paulo,
Nunca precisei fazer algo deste tipo, mas pelo que pesquisei realmente não temos grandes possibilidades de tratamento de eventos no DatePicker, talvez o mais usual é o evento ValueChanged que não resolve seu caso.
No entanto, se observar o DatePicker possui uma propriedade PickerPageUri, que permite que você crie uma página totalmente personalizada para a seleção da data. Sei que não é muito usual, mas talvez lhe ajude. Aqui tem um exemplo de como fazer isso: http://www.windowsphonegeek.com/articles/wp7-datepicker-and-timepicker-in-depth--api-and-customization
Uma outra possibilidade, que sinceramente acredito que será mais fácil no seu caso, é baixar código do Toolkit, e alterar a classe DatePicker para expor dois novos eventos: click do Done e click do Cancel.
[]'s
Thiago J. Mônaco
MCP, MCAD, MCSD, MCDBA, MCTS, MCPD and MCT Professional
Scrum Developer I and Professional Scrum Master
http://www.windowsphonebrasil.net
@thiagojmonaco
-
Olá Paulo,
A propriedade "Value" do DatePicker é do tipo "DateTime?" (Nullable<DateTime>), ou seja, basta você setar "null" que a data some.
O controle vem como padrão com a data do dia atual, então se quer iniciá-lo sem valor, apenas coloque no construtor de sua página, depois do InitializeComponent();
DatePicker.Value = null;
Se um usuário selecionar um valor, o DatePicker.Value receberá a data escolhida, mas se ele clicar em cancelar, nada será mudado (o evento ValueChanged nem é chamado). Esse é comportamento é correto por que o botão cancelar é para cancelar a mudança do usuário e não para "zerar" a data.
Caso você queria "zerar" um valor já existente de um DatePicker, eu sugiro você colocar um botão (faça um ícone de lixo ou algo assim) do lado do controle. No clique desse botão, chame um "DatePicker.Value = null" no seu code-behind ou mude o valor da propriedade com binding no DatePicker.Value para null caso esteja usando MVVM.
[]'s!
André Carlucci
- André Carlucci - Way2 Technology - twitter/andrecarlucci - andrecarlucci.com- Sugerido como Resposta Pedro LamasMVP quinta-feira, 3 de novembro de 2011 15:14
- Marcado como Resposta Fernando Figuera terça-feira, 13 de dezembro de 2011 16:31
-
Obrigado pelas respostas pessoal, acho que vou seguir o conselho do nosso amigo Andre, vou colocar um icone para limpar o objeto, caso eu não tenha mas espaço na tela eu irei zerar sempre o valor do controle, assim que ele receber o foco.
Mais uma vez muito obrigado a todos!
-
Thiago, você me passou este artigo e percebi que ele fala para por a imagem ApplicationBar.Check.png na solução. O exemplo que você passou ele ta usando o tema dark, caso o usuário mudar o tema para claro a aplicação não vai se comportar direito, pois terá um botão do tema dark no tema claro. Como faço para mudar a imagem de acordo com o tema?
-
Paulo, as imagens usadas na ApplicationBar são sempre PNG's brancos com fundo transparentes!
O Windows Phone encarrega-se de mudar a cor do icon em runtime conforme o tema escolhido! ;)
Pedro Lamas
DevScope | Senior Solution Developer & WP7 Development Speaker
www.pedrolamas.com | @pedrolamas -
Bom segundo o artigo que eu li eu tinha que jogar a imagem na pasta Toolkit.Content que iria aparecer.
Eu tinha jogado e não tinha funcionado. Só apareceu depois que eu renomiei de appbar.check.rest.png para ApplicationBar.Check.png. Sendo que existe 2 imagens check, uma para o tema branco e outro para o tema preto. Do jeito que fiz no tema branco a imagem fica legal, mas ja no tema preto fica estranho -
Ora segundo a tua experiencia em que dizes que no tema branco fica tudo bem, daí presumo que usaste as imagens que estão a preto, mas na verdade deves usar as que estão a branco, para que o sistema operativo substitua o branco com a cor que contraste com o tema! ;)
Pedro Lamas
DevScope | Senior Solution Developer & WP7 Development Speaker
www.pedrolamas.com | @pedrolamas- Sugerido como Resposta Pedro LamasMVP quarta-feira, 2 de novembro de 2011 13:55
- Não Sugerido como Resposta Thiago MonacoModerator quinta-feira, 3 de novembro de 2011 12:20
- Sugerido como Resposta Pedro LamasMVP quinta-feira, 3 de novembro de 2011 15:14
-