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