2013-07-29 49 views
1

我想使用MVVMCross將一個屬性的字符串綁定到UILabel。要綁定一個普通字符串我只想做:如何綁定NSAttributeString(或NSMutableAttributedString)

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

如果你打電話

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

那麼你結合你的UILabel的默認屬性這是string屬性文本。

您需要改爲綁定AttributedText。嘗試添加類似:

.For(l => l.AttributedText) 

這裏對於如何使用AttributedText一些問題 - 在MVX數據綁定如Underline text in UILabel in monotouch (porting ObjC code)

更多請見https://github.com/slodge/MvvmCross/wiki/Databinding

+0

感謝斯圖爾特。那樣做了。感謝鏈接,處理屬性字符串的API有點令人困惑。 –