如何绑定NSAttributeString(或NSMutableAttributedString)
我想使用MVVMCross将一个属性string绑定到一个UILabel。 绑定一个常规string,我只是做:
set.Bind(MyLabel).To(vm => vm.MyString);
但是我需要一个string,其中一部分文本将使用一种颜色和一种字体大小,而另一部分将使用不同的颜色和不同的字体大小。 如果这是静态的,没问题,我会在界面生成器中添加一个标签,并将其设置为“属性”,然后设置任何字体选项,我想要哪些部分的string我需要。
所以我想用Mvvmcross,我可能需要一个转换器将我的源string转换为一个属性的string,所以我试图创build一个转换器从MvxValueConverter<string,NSMutableAttributedString>
,只是在它的Convert
方法:
return new NSMutableAttributedString(value);
最终我会添加一些不同的属性。 不幸的是,这是行不通的。 如果我这样设置我的绑定:
set.Bind(MyLabel).To(vm => vm.MyString).WithConversion("MyConverter");
看来,MvvmCross只是对属性string做一个.ToString
,它显示为:
Some Text {}
请注意{}
不是原始string的一部分。
有没有办法在MVVMCross绑定一个属性的string?
如果你打电话
set.Bind(MyLabel).To(vm => vm.MyString);
那么你绑定了你的UILabel的默认属性,这是string
属性Text。
您需要改为绑定AttributedText。 尝试添加如下内容:
.For(l => l.AttributedText)
这里有一些关于使用AttributedText的问题 – 例如在UILabel中的下划线文本在monotouch(移植ObjC代码)
有关mvx数据绑定的更多信息,请参阅https://github.com/slodge/MvvmCross/wiki/Databinding