2

我想使用 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对属性字符串执行了 a ,它显示为:

Some Text {}

注意{}不是原始字符串的一部分。

有没有办法在 MVVMCross 中绑定属性字符串?

4

1 回答 1

1

如果你打电话

 set.Bind(MyLabel).To(vm => vm.MyString);

那么您将绑定 UILabel 的默认属性,即string属性 Text。

您需要改为绑定 AttributedText。尝试添加类似:

    .For(l => l.AttributedText)

这里有一些关于使用 AttributedText 的问题 - 例如,单点触控中 UILabel 中的下划线文本(移植 ObjC 代码)

有关 mvx 数据绑定的更多信息,请参阅https://github.com/slodge/MvvmCross/wiki/Databinding

于 2013-07-30T03:30:05.683 回答