如何将NSAttributedString绑定到UITextView

时间:2014-12-18 16:18:41

标签: ios xamarin.ios xamarin mvvmcross

我们正在使用MVVMCross,我们无法将NSAttributedString绑定到UITextView。这很奇怪,因为相同的代码不使用BindingSet,也使用Bindig for Text属性而不是AttributedText

如上所述,这行代码没有绑定,TextView只显示默认文本:

set.Bind (TxtActivityText).For(txt => txt.AttributedText).To (vm => vm.Activity).WithConversion("ActivitySpanMessage");

...并输出以下警告: " MvxBind:警告:6.06无法创建目标绑定以绑定AttributedText for Activity"

虽然这条线路正常运行:

set.Bind (TxtActivityText).For(txt => txt.Text).To (vm => vm.Activity).WithConversion("ActivitySpanMessage"); // Works fine also binding to the default property

最后,不使用绑定也可以正常工作:

TxtActivityText.AttributedText = SpanMessageHelper.ConvertToAttributedString(ViewModel.Activity, null, null, null); // This function is the same I call in the ActivitySpanMessageConverter

有什么想法吗?这可能是个错误吗?

1 个答案:

答案 0 :(得分:5)

这可能是因为Xamarin链接器不包含UITextView.AttributedText,因为它仅用于表达式。有关详情,请参阅此帖子:MvvmCross Failed to create target binding for EditingDidBegin on iPhone

您可以通过转到LinkerPleaseInclude.cs并更改您的UITextView包含方法来解决此问题:

public void Include(UITextView textView)
{
    textView.Text = textView.Text + "";
    textView.Changed += (sender, args) => { textView.Text = ""; };

    // Add this line here
    textView.AttributedText = new NSAttributedString();
}