나는 Mvvm과 MvvmCross에 비교적 익숙하다. iOS에서 문제가 발생했습니다.MvvmCross - 값 변환기가있는 TableViewCell의 바인딩 지연 - DataContext가 올바르게 설정되지 않았습니까?
이 내 내가 AwakeFromNib
에 넣어 한 내 MvxTableViewCell - 서브 클래스 바인딩 지연 :
this.DelayBind(() =>
{
var bindingSet = this.CreateBindingSet<MyTableViewCell, MyViewModel>();
bindingSet.Bind(myLabel).To(vm => vm.Name).WithConversion(debugvalueconverter, base.DataContext);
});
내 debugvalueconverter은 다음과 같습니다
public class DebugValueConverter : IMvxValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
System.Diagnostics.Debug.WriteLine("Converting debug: " + value);
if (parameter != null)
{
var vm = (MyViewModel)parameter;
System.Diagnostics.Debug.WriteLine("Converting debug - name from vm: " + vm.Name);
}
return value;
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
return new NotImplementedException();
}
}
이 몇 가지 이상한 출력을 생성 할 때 I 테이블 뷰에서 드래그 할 때 셀을 재활용하기 시작했습니다.
Converting debug: [Name from the cell that's appearing]
Converting debug - name from vm: [Name from an old cell which got recycled]
I. 이 경우 DataContext가 올바르게 설정되지 않은 것처럼 보이지만 name-property가 올바르게 설정되어 있습니다. 왜 이런 일이 일어나는 걸까요?
내 문제는 내 ViewModel (즉, 내 base.DataContext)의 몇 가지 속성에 따라 "고급"계산을 수행 할 변환기를 사용하고 싶다는 것입니다.
MvvmCross의 버그입니까? 아니면 누락 되었습니까? DataContext가 올바르게 설정되지 않은 이유는 무엇입니까?
감사합니다.