如何将NSAttributedString绑定到UITextView

Jor*_*nas 1 xamarin.ios ios mvvmcross xamarin

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

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

set.Bind (TxtActivityText).For(txt => txt.AttributedText).To (vm => vm.Activity).WithConversion("ActivitySpanMessage");
Run Code Online (Sandbox Code Playgroud)

...并输出以下警告: "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
Run Code Online (Sandbox Code Playgroud)

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

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

有任何想法吗?这可能是个错误吗?

Bog*_*nar 5

这可能是因为Xamarin链接器不包含UITextView.AttributedText,因为它仅用于表达式.有关详细信息,请参阅此文章:MvvmCross无法在iPhone上为EditingDidBegin创建目标绑定

您可以通过转到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();
}
Run Code Online (Sandbox Code Playgroud)