我们有一个产品,它通过一个PCL使用模型和ViewModels的共享代码库,支持iOS、Android和Windows。
我有一些来自ViewModels的字符串属性的示例,这些属性将受益于使用不同格式(如粗体或红色)选择字符串的不同部分。
一个例子是这个字符串,它是一个部件被发出的次数。ViewModel中的属性是
5项中的0项
然而,有时财产需要说
第五期的最后一期!重新点菜!
虽然这两个值都来自IssueState属性,但在粗体中显示!Reorder!或前景为红色的"5中5“可能会很有用。
另一个例子是FoundIn属性的SearchResultViewModel,其中的值是
在姓名、地址和地位上找到
在这里,我们想用粗体显示“名称”、“地址”和“状态”部分
可在Name、Address和Status中找到
我不想把这个属性分割成多个属性,因为它很笨重,并且扰乱了IMHO,ViewModel
如何解决这一问题的建议?我也不想在ViewModels中嵌入太多的UI格式
我目前的想法是复制iOS SDK的NSAttributedString及其关联的“属性”的范围属性。NSAttributedString是非常以UI为中心的,所以我会允许更多的格式设置。
发布于 2017-10-23 06:45:57
最后,我选择了一个AttributedStringViewModel,它将文本保存为字符串,然后具有一个StringFormattingAttribute列表的只读属性(设置为ctor)。
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中,我有一个要转换为NSAttributedString的MVVMCross转换器
https://stackoverflow.com/questions/46838110
复制相似问题