나는 이것이 MvvmCross 파서의 일반적인 문제입니다 추측에는 요 - 아마
private void ParsePropertyName()
{
var propertyText = new StringBuilder();
while (!IsComplete && char.IsLetterOrDigit(CurrentChar))
{
propertyText.Append(CurrentChar);
MoveNext();
}
var text = propertyText.ToString();
CurrentTokens.Add(new MvxPropertyNamePropertyToken(text));
}
에서 https://github.com/MvvmCross/MvvmCross/blob/v3/Cirrious/Cirrious.MvvmCross.Binding/Parse/PropertyPath/MvxSourcePropertyPathParser.cs#L80
에서 아마 같은 것을 고정 할 필요가 :
while (!IsComplete &&
(char.IsLetterOrDigit(CurrentChar) || CurrentChar == '_')
해결 방법이 있지만 가능한 가장 쉬운 해결책은 해결 방법을 시도하는 것보다는이를 수정하고 다시 작성하는 것입니다. 이 정적 인 가정 (비 변화) 텍스트 ....
해결 방법을 시도하고 싶어이 지금은 단지 일회성 인 경우, 그때 하나의 해결 방법에
수 있습니다 Hack
라는 셀에 속성을 추가 한 다음 바인딩 같은 :
bindings.Bind(this).For(v => v.Hack).To(vm => vm);
//...
private MyTableCellViewModel _hack;
public MyTableCellViewModel Hack
{
get { return _hack; }
set { _hack = value; if (_hack != null) titleLabel.Text = _hack.MY_VALUE; }
}
(같은 가정에) 또 다른 방법은 값 변환기를 사용하는 수 있습니다 -
bindings.Bind(titleLabel).To(vm => vm.MY_TITLE).WithConversion(new WorkaroundConverter(), null);
// ...
public class WorkaroundConverter : MvxValueConverter<MyTableCellViewModel, string>
{
protected override string Convert(MyTableCellViewModel vm, /*...*/)
{
if (vm == null) return null;
return vm.MY_TITLE;
}
}
나는 소스 코드에 수정을 가했다. (그리고 다시 깨지지 않는지 테스트했다.) - https://github.com/MvvmCross/MvvmCross/issues/461에 링크 된 커밋 참조. – Stuart
고맙다. 스튜어트! 언제나처럼 똑똑하고 믿을 수없는 응답 시간. – kwl
수정 프로그램이 밑줄로 시작하는 변수를 해결하지 못하는 것 같습니다 (나는 우리가 미친 뷰 모델을 가졌음). 문제는'ParseNextToken'에있는 것 같습니다. – kwl