2013-01-07 2 views
2

누구나 바이트 [] (이미지)를 Axml보기의 Image 컨트롤에 바인딩하는 방법을 알고 계십니까? 내 ViewModel이 MvxViewModel에서 상속됩니다. 내 모든 다른 바인딩은 훌륭하지만 이미지를 바인딩 할 수있는 방법을 찾을 수 없습니다.MvvmCross Android Bind 이미지 from []

답변

2

사용자 정의 UI 컨트롤을 사용하여 바인딩 할 수 있다고 생각합니다. ImageView

  • 은 (컨텍스트를 전달하고 기본 생성자에 아래 속성을하는) 기본 생성자를 추가 새로운 MyImageView에서 상속

    1. 을 :

      이렇게하려면, 당신은 같은 일을해야합니다

    2. 로 구현 MyImageView에 새 RawImage 속성을 추가 :

      private byte[] _rawImage; 
      public byte[] RawImage 
      { 
          get { return _rawImage; } 
          set 
          { 
            _rawImage = value; 
            if (_rawImage == null) 
              return; 
      
            var bitmap = BitmapFactory.DecodeByteArray(_rawImage, 0,_rawImage.Length); 
            SetImageBitmap(bitmap); 
          } 
      } 
      

    그런 다음 MyImageView 컨트롤을 보통 ImageView 대신 axml에서 사용할 수 있습니다.

    참고 - 위의 코드는 테스트하지 않았지만 일단 View에서 byte []를 얻으면 어떤 드로 이드 코드를 사용해야하는지 확신 할 수 있습니다.


    이 대안 방법으로, 당신은 또한 일반 ImageViewbyte[]를 결합하는 사용자 지정 바인딩을 사용할 수 있습니다 - 당신은 그것을 더 쉽게 할 수 In MvvmCross how do I do custom bind properties

  • +0

    I의 정의를 사용

    BitmapFactory.DecodeByteArray(_rawImage, 0,_rawImage.Length); 결국 바인딩. 도와 주셔서 감사합니다 –

    2

    바인딩 정의의 예를 볼 I 또한 그 질문에 걸림돌 후 것을 발견 :로

    안드로이드 결합,이 같은보기를 구성 할 수 있습니다 ([1]에서 볼 수와 같은) ImageView에 대한 비트 맵을 설정하는 것은 Bitmap입니다 :

    <ImageView 
         local:MvxBind="Bitmap ByteArrayToImage(ImageByteArray)" /> 
    

    그런 다음 바이트 배열을 Bitmap 인스턴스로 변환하는 ByteArrayToImageValueConverter이라는 ValueConverter 만 정의하면됩니다. 저 들어 ValueConverter을 사용하여 맞춤 결합 생성을 통해 바람직한 방법이다 이미 비트 맵 바이트 배열을 변환하기위한 코드를 가지고

    ) [1] https://github.com/MvvmCross/MvvmCross/blob/bbf9a2ac76e74d9404f4b57036c6e29dfe2cc6c3/Cirrious/Cirrious.MvvmCross.Binding.Droid/MvxAndroidBindingBuilder.cs#L79

    +0

    아름다운 해결책. 감사! – ramonesteban78

    관련 문제