2017-10-19 4 views
0

우리는 iOS, Android 및 Windows를 지원하는 PCL을 통해 모델 및 ViewModels의 공유 코드 기반을 사용하는 제품을 보유하고 있습니다.MVVM 크로스 플랫폼 시나리오에서 텍스트 마크 업

문자열의 다른 부분을 굵게 또는 빨강과 같이 다른 형식으로 선택한 경우 이점이있는 ViewModels의 문자열 속성 예제가 있습니다.

한 예로 부품이 발행 된 횟수 인이 문자열이 있습니다. 뷰 모델의 속성은

그러나 때때로 재산 5

의 0을 발행

최종 문제 5의 5 말할 필요가! 다시 정렬합니다!

두 값 모두 IssueState 속성에서 나온 것이므로 을 표시하는 것이 유용 할 수 있습니다!굵게 또는 "5 of 5"(빨간색의 전경색) 값은 이름에서 찾을 수

는, 주소 및 상태 여기

우리가 대담 "이름"을 원하는 것입니다

또 다른 예 "는 SearchResultViewModelFoundIn 속성입니다 주소 "와"상태 "부분은

이름, 주소에서 발견상태

그 투박하고이 문제를 해결하는 방법에 대한 이럴 뷰 모델

제안을 엉망으로 내가 여러 속성에 재산을 분할 싶지 않아? 또한 ViewModels에 너무 많은 UI 형식을 포함시키고 싶지 않습니다.

현재 나의 생각은 iOS SDK의 NSAttributedString을 복사하는 것이며 관련 "속성"에 대한 Range 속성입니다. NSAttributedString은 매우 UI 중심적이므로 많은 서식을 지정할 수 있습니다.

답변

0

내가 문자열로 텍스트를 개최 끝에서 AttributedStringViewModel에 들어갑니다 다음 FormattingRange 클래스 StringFormattingAttribute

public class StringFormattingAttribute 
{ 
    public StringFormattingAttribute(FormattingType type, FormattingRange range) 
    { 
     this.Type = type; 
     this.Range = range; 
    } 

    public FormattingType Type { get; } 

    public FormattingRange Range { get; } 
} 

의 목록의 (ctor에 설정) 읽기 전용 속성을 가지고 시작을 누르고 StringFormattingAttribute는 아이폰 OS에서

적용 텍스트 문자열의 끝 위치 나는 NSAttributedString은

로 변환하는 MVVMCross 컨버터를 가지고