2017-10-19 59 views
0

我们有一款产品通过支持iOS,Android和Windows的PCL使用Models和ViewModels的共享代码库。在MVVM跨平台场景中标记文本

我从这些ViewModels的字符串属性的例子,将受益于不同部分的字符串采用不同的格式,如粗体或红色。

一个例子是这个字符串是零件发出的次数。在视图模型的属性是

发行的5

0不过有时物业需要说

最后一期的5!再订购!

尽管两个值都来自IssueState属性,但显示!重新排序可能很有用!加粗或者也许是“5的5”与前景的红色。

另一个例子是SearchResultViewModelFoundIn属性,其中值是

找到在名称,地址和状态

在这里,我们会想大胆“名称”,“地址”和 “状态” 部分

找到在名称地址状态

我不想财产了拆分成多个属性,那就是笨重,打乱了恕我直言视图模型

建议如何解决这个问题?我也不想在ViewModels中嵌入太多的UI格式

我目前的想法是复制iOS SDK的NSAttributedString及其相关“属性”的范围属性。 NSAttributedString是非常以用户界面为中心的,所以我会允许任何接近这种格式的地方。

回答

0

我去在这举行的文本字符串末尾的AttributedStringViewModel,然后具有StringFormattingAttribute

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

    public FormattingType Type { get; } 

    public FormattingRange Range { get; } 
} 

列表的只读属性(在构造函数中设置)的FormattingRange类持有的起点和StringFormattingAttribute适用于

在iOS中我有一个MVVMCross转换器转换为NSAttributedString