如何绑定NSAttributeString(或NSMutableAttributedString)

时间:2013-07-29 21:13:20

标签: ios xamarin.ios xamarin mvvmcross

我想使用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中绑定属性字符串?

1 个答案:

答案 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