none
Setar icones do objeto DatePicker RRS feed

  • 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.

    domingo, 30 de outubro de 2011 23:10

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
    segunda-feira, 31 de outubro de 2011 19:49
    Moderador

Todas as Respostas

  • Na verdade eu já consegui setar a imagem, mas não sei como faço para limpar meu DatePicker quando clicar no botão cancelar!
    segunda-feira, 31 de outubro de 2011 00:13
  • 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
    segunda-feira, 31 de outubro de 2011 10:57
    Moderador
  • 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
    segunda-feira, 31 de outubro de 2011 19:49
    Moderador
  • 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!

    terça-feira, 1 de novembro de 2011 15:47
  • 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?
    quarta-feira, 2 de novembro de 2011 04:01
  • 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
    quarta-feira, 2 de novembro de 2011 11:04
  • 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 
    quarta-feira, 2 de novembro de 2011 12:22
  • 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
    quarta-feira, 2 de novembro de 2011 13:49
  • Vc tem razão, comi mosca. Eu acabei usando a imagem errada.

    :) 
    quarta-feira, 2 de novembro de 2011 13:57