locked
É possível converter byte[] para BitmapImage direto no xaml? RRS feed

  • Pergunta

  • Pessoal,

    tenho uma lista de usuário que um atributo é a foto do tipo byte[], sempre uso uma função minha para converter a mesma para BitmapImage e exibo as fotos normalmente.

    To com um caso que já jogo a minha lista de usuário pra dentro de um Listbox e lá dentro tem um controle de Imagem, sendo que o meu atributo é do tipo byte[] e o controle espera BitmapImage. É possível eu chamar a função direto do XAML?


    Como nesse caso não uso o modelo MVVM me complicou um pouco.

    Recaptulando, no meu xaml tem uma lista com um objeto para exibir a imagem, meu problema é que meu atributo esta como byte[], eu precisava dentro do xaml chamar uma função para converter de byte[] para BitmapImage é possível?

     

    quarta-feira, 11 de janeiro de 2012 14:38

Respostas

Todas as Respostas

  • Acho que vou montar um DTO e coloco as informações que preciso já com a foto convertida e passo direto para o controle o dto
    quarta-feira, 11 de janeiro de 2012 15:03
  • Estás a usar Bindings? Então podes simplesmente criar uma classe que implemente IValueConverter e nela utilizar a tua função de conversão de byte[] para BitmapImage!

    Tens aqui um exemplo de uma simples implementação do IValueConverter que eu fiz no Cimbalino Windows Phone Toolkit:

    https://github.com/PedroLamas/Cimbalino-Phone-Toolkit/blob/master/src/Cimbalino.Phone.Toolkit/Converters/NegativeBooleanConverter.cs

    No caso acima apenas devolve o inverso de um valor bool, mas podia fazer o que me quisesse! Nota que para o teu caso provavelmente só precisas de implementar o método Convert, o ConvertBack é desnecessário!

    Deve haver mais, mas encontrei este artigo que explica como usar depois o conversor; apesar de ser para o WPF é igual no Silverlight no Windows Phone:

    http://www.abhisheksur.com/2010/03/how-to-use-ivalueconverter-in-binding.html


    Pedro Lamas
    DevScope | Senior Solution Developer & WP7 Development Speaker
    www.pedrolamas.com | @pedrolamas
    quarta-feira, 11 de janeiro de 2012 15:10
  • Paulo, conforme o Pedro comentou, o que precisa é um converter, não só no seu caso, mas em qualquer caso que precisar converter algo vindo da sua propriedade ao mostrar na tela, no binding do controle.

    crie sua classe, implmenta a interface ivalueconverter e mude de data para string, string para int, etc... coloca isso no controle do tipo binding=x converter=y conforme exemplos e estará feito!


    Rodolpho Marques do Carmo Microsoft Certified Professional Windows Phone 7 Development
    quinta-feira, 12 de janeiro de 2012 10:38