我们的产品通过PCL使用Models和ViewModels的共享代码库,支持iOS,Android和Windows。
我有来自那些ViewModel的字符串属性的示例,这些属性可以通过使用不同的格式(如粗体或红色)选择字符串的不同部分而受益。
一个例子是这个字符串,它是部件发出的次数。 ViewModel中的属性是
发布0 of 5
但有时候酒店需要说
最后第5期5期!重新订购!
虽然这两个值都来自IssueState属性,但在粗体中显示!重新排序!或者使用前景红色显示“5 of 5”可能很有用
另一个示例是FoundIn
的{{1}}属性,其值为
找到姓名,地址和状态
在这里,我们想要加粗“姓名”,“地址”和“状态”部分
在名称,地址和状态
中找到
我不想将属性拆分为多个属性,因为它很笨拙并且混淆了IMHO的ViewModel
有关如何解决此问题的建议?我也不想在ViewModels
中嵌入过多的UI格式我目前的想法是复制iOS SDK的NSAttributedString及其相关“属性”的范围属性。 NSAttributedString非常以UI为中心,所以我允许接近那么多格式化。
答案 0 :(得分: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