2

MVVMCross を使用して、属性付きの文字列を UILabel にバインドしたいと考えています。通常の文字列をバインドするには、次のようにします。

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

しかし、テキストの一部が 1 つの色と 1 つのフォント サイズを使用し、別の部分が別の色と別のフォント サイズを使用する文字列が必要です。これが静的で問題ない場合は、インターフェイスビルダーにラベルを追加して「属性付き」に設定し、必要な文字列の部分に必要なフォントオプションを設定します.

だから私は 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);

次に、プロパティ Text である UILabel のデフォルト プロパティをバインドしますstring

代わりに AttributedText をバインドする必要があります。次のようなものを追加してみてください:

    .For(l => l.AttributedText)

ここには AttributedText の使用に関するいくつかの質問があります。たとえば、モノタッチで UILabel のテキストに下線を引く (ObjC コードの移植)

mvx データ バインディングの詳細については、https://github.com/slodge/MvvmCross/wiki/Databindingを参照してください。

于 2013-07-30T03:30:05.683 に答える