如何在Xamarin.iOS上使用自定义委托和MvvmCross绑定?

时间:2017-10-06 13:43:10

标签: ios xamarin mvvm xamarin.ios mvvmcross

我有自定义UITextView:

public partial class EditableDescriptionTextView : UITextView, IUITextViewDelegate 
{
    ctors()...//Invokes Initialize();
    void Initialize()
    {
       Delegate = this;
    }

    //Override methods I need to handle
}

在我的视图中,我有一个与ViewModel的绑定,如下所示:

bindingSet.Bind(EditableDescriptionTextView)
    .To(vm => vm.Description);

问题是首先使用字符串:Delegate = this。好的,但是当工作bindingSet.Bind(...).To(...)似乎委托更改和应用程序崩溃时会出现异常,例如:

Event registration is overwriting existing delegate. Either just use events or your own delegate

当我直接尝试在绑定后分配委托时会发生同样的错误:

// CustomDelegate extends UIViewTextDelegate
EditableDescriptionTextView.Delegate = new CustomDelegate();

换句话说,每次重新分配代表时app都会失败。是否有可能将我自己的代表与MvvmCross一起使用,或者这种情况的最佳解决方法是什么?

P.S。:最初我需要像这里一样实现功能 ShouldChangeTextInRange is not called for UITextView,但我还需要mvvxcross binding。

1 个答案:

答案 0 :(得分:0)

这看起来不像MvvmCross问题。 MvvmCross不会将任何委托附加到UITextFields。但是,由于您正在实现自己的Delegate,MvvmCross用于侦听TwoWay绑定的此类视图中的更改的事件处理程序,在您附加自定义委托后可能无法工作。

所以我只想坚持UITextField为您提供的事件。