2015-01-21 2 views
0

이것은 바보 같은 질문처럼 보일지 모르지만 정답을 찾는 데 어려움을 겪고 있습니다. iOS 용 MVVMCross 및 Xamarin을 사용하는 응용 프로그램을 작성 중입니다. 응용 프로그램에서 표준 자막 셀 스타일을 사용하여 TableView 사용하려고합니다. 제목 및 세부 텍스트에 성공적으로 바인딩 할 수는 있지만 이미지를 로컬 파일에 바인딩하는 데 성공하지 못했습니다. 내가 본 대부분의 예제는 웹에서 가져온 이미지를 사용하는 반면 여기에서는 Resources 폴더의 이미지를 사용하고 싶습니다. 또한 사용자 정의 셀을 작성하지 않아도되도록 노력하고 있습니다.TableView (자막)의 이미지 MVVM

MVVMCross 및 Xamarin을 사용하여 로컬 이미지를 표준 자막 셀 스타일에 바인딩하는 방법은 무엇입니까? 해당 코드의

라인 :

var source = new MvxStandardTableViewSource (TableView, UITableViewCellStyle.Subtitle, new NSString("CellID"), "ImageURL Image; TitleText Title; DetailText EventDate"); 

감사합니다! 당신의 UI에 바인딩하기 위해 다음

public class ItemTypeToImageValueConverter : IMvxValueConverter 
{ 
     public object Convert(object value, Type targetType, object parameter, CultureInfo culture) 
     { 
      string assetName = "unknown"; 

      switch ((ItemType)value) { 
      case ItemType.SOMETHING: 
       assetName = "something"; 
       break; 
      default: 
       throw new ArgumentOutOfRangeException(); 
      } 

      return "res:item_" + assetName + ".png"; 
     } 

     public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) 
     { 
      throw new NotImplementedException(); 
     } 
} 

:

+0

당신은'고해상도를 사용합니다 '접두사를 - 예를 http://stackoverflow.com/questions/18498656/mvvmcross-mvximageviewloader-how-to-set-defaultimagepath-property를 참조하십시오. – Stuart

답변

1

당신은 변환기를 사용하여이 작업을 수행 할 수 있습니다

private readonly MvxImageViewLoader typeImageViewLoader; 

public ItemItemTableViewCell(IntPtr handle) 
      : base(handle) 
     { 
      typeImageViewLoader = new MvxImageViewLoader(() => BackgroundImageView); 

      this.DelayBind(() => 
       { 
        var set = this.CreateBindingSet<ItemItemTableViewCell, Item>(); 
        set.Bind(typeImageViewLoader).To(vm => vm.Type).WithConversion("ItemTypeToImage"); 
        set.Apply(); 
       }); 
     } 
관련 문제