이미지를 스트림으로 제공하는 Restful 서비스가 있습니다. 이미지를 표시하기 위해 해당 서비스를 브라우저에 호출하면 거기에서도 잘 작동합니다. 이제 다음과 같이 Xamarin View에 해당 이미지를 표시하려고합니다.
<ffimageloading:CachedImage Source="{Binding ImageSource}" Aspect="AspectFill" WidthRequest="75" HeightRequest="200"></ffimageloading:CachedImage>
ViewModel에는 다음과 같은 기능이 있습니다.
private ImageSource _imageSource;
public ImageSource ImageSource
{
get { return _imageSource; }
set
{
_imageSource = value;
SetProperty(ref _imageSource, value);
}
}
private string itemId;
public string ItemId
{
get
{
return itemId;
}
set
{
itemId = value;
LoadItemId(value);
}
}
public async void LoadItemId(string itemId)
{
try
{
var item = await MockDataStore.GetItemAsync(itemId);
Id = item.ID;
Text = item.TITLE;
Description = item.CONTENT;
//ImageSource = "http://127.0.0.1:4321/Service.svc/GetImage/?uri=12";
ImageSource = "https://www.shareicon.net/data/128x128/2016/05/02/758874_package_512x512.png";
}
catch (Exception)
{
Debug.WriteLine("Failed to Load Item");
}
}
보기에서 이미지의 소스에 직접 이미지 링크를 제공하면 완벽하게 작동합니다.
<ffimageloading:CachedImage Source="https://www.shareicon.net/data/128x128/2016/05/02/758874_package_512x512.png" Aspect="AspectFill" WidthRequest="75" HeightRequest="200"></ffimageloading:CachedImage>
그러나 ViewModel에서 ImageSource를 얻으려고 할 때 서비스 호출이나 이미지 링크가 아닌 뷰에 이미지가 표시되지 않습니다. 디버깅하는 동안 내가 본 이상한 점은 Hot Reload 를 활성화하는 뷰에서 무언가를 변경할 때마다 갑자기 에뮬레이터의 ViewModel에서 이미지가 표시된다는 것입니다. 저는 Xamarin을 처음 사용하며 해결 방법을 모릅니다.
귀하의 VM이을 구현하지 않고 INotifyPropertyChanged
제자리에 배치하고 ImageSource
view / xaml 에 대한 변경 사항을 알립니다 .
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다