2016-11-09 2 views
0

다음 이미지 스 니펫을 사용하여 이미지 URL을 ViewCell 객체의 한 요소로 사용합니다.Image.SetBinding()을 통한 이미지 URI 바인딩이 제대로 작동하지 않습니다.

... 
    Image Picture = new Image() 
      { 
       Aspect = Aspect.AspectFit, 
       HorizontalOptions = LayoutOptions.StartAndExpand 
      }; // ImageSource.FromUri(new Uri("sImageUrl"))) 
      Picture.SetBinding(Image.SourceProperty, "sImageUrl"); 

    ... 

해당 셀보기를 사용중인 목록의 이미지가 항상로드되지 않습니다. 문제의 정확한 원인을 확인할 수 없었지만 문제는로드 프로세스 (URL/인터넷에서 이미지를로드하는 것)라고 생각합니다.

URL을 설정하면 문제가 해결 될 수 있습니다. 새로운 Uri (...)을 통해 문서에 설명 된대로

var webImage = new Image { Aspect = Aspect.AspectFit }; 
webImage.Source = ImageSource.FromUri(new Uri("https://xamarin.com/content/images/pages/forms/example-app.png")); 

이제 내 질문 : uri 객체 바인딩에 대한 해결 방법이 있습니까? 예 :

... 
    Image Picture = new Image() 
      { 
       Aspect = Aspect.AspectFit, 
       HorizontalOptions = LayoutOptions.StartAndExpand 
      }; // ImageSource.FromUri(new Uri("sImageUrl"))) 
      Picture.SetBinding(Image.SourceProperty, ImageSource.FromUri(new Uri("sImageUrl"))); 

    ... 

저는 xamarin studio (버전 6.1.2, 빌드 44, 업데이트 채널 "beta", os x)와 협력 중입니다.

누군가 tipp가 있으면 좋을 것입니다.

고마워, 후

알렉스

+0

왜 ImageSource.FromUri가 당신을 위해 작동하지 않는) 다른 사람을 도움이 어쩌면

using Xamarin.Forms.Platform.Android; using Xamarin.Forms; using System; [assembly: ExportRenderer(typeof(AsyncSrcImage), typeof(AsyncSrcImageRenderer))] public class AsyncSrcImageRenderer : ImageRenderer { protected override void OnElementChanged(ElementChangedEventArgs<Image> e) { base.OnElementChanged(e); AsyncSrcImage oImage = (AsyncSrcImage)Element; if (oImage != null && oImage.AsyncImgUrl != "") { oImage.Source = ImageSource.FromUri(new Uri(oImage.AsyncImgUrl)); } } } 

:이 나는 문서에 설명 된대로 새 열린 우리당 (...)를 통해 이미지 소스를로드하고있어 설명서에 설명되어 있습니까? –

+0

안녕하세요, "uri"값을 바인딩하려고하자마자 메시지가 나타납니다. 오류 CS1929 : 'Xamarin.Forms.Image'유형에 'SetBinding'멤버가없고 최상의 확장 메서드 인 'Xamarin'이 없습니다. Forms.TemplateExtensions.SetBinding (이 Xamarin.Forms.DataTemplate, Xamarin.Forms.BindableProperty, string) '에는'Xamarin.Forms.DataTemplate '유형의 인스턴스가 필요합니다 (CS1929). – AlexM

답변

0

좀 더 나는 그것이 보안/전문 방법입니다 ..하지만 지금은 작동하는 것 같다 잘 모르겠어요 .. 나는 해결책을 발견하려고. 나는 내 자신의 클래스 "AsyncSrcImage"를 구현 이미지에서 파생 된 또 다른 바인딩 속성을 추가 :

public class AsyncSrcImage : Image 
     { 
      private static String sDefaultURL = ""; 

      public static readonly BindableProperty AsyncImgUrlProperty = BindableProperty.Create(nameof(AsyncImgUrl), typeof(String), typeof(AsyncSrcImage), sDefaultURL); 
      public String AsyncImgUrl 
      { 
       get { return (String)GetValue(AsyncImgUrlProperty); } 
       set { SetValue(AsyncImgUrlProperty, value); } 
      } 

     } 

이 또한 내가 정의 렌더러로 렌더링 과정을 조정 내가 무슨 짓을

.