使用AppCompatActivity后,在更新到MvvmCross 4.0后,DataBindings会中断

Ale*_*akh 5 data-binding android-appcompat xamarin.android mvvmcross xamarin

我在我的MvvmCross 3.5.1应用程序中使用了android工具栏,但是一旦我将其更新为MvvmCross 4.0,数据绑定就被破坏了.只要没有基本appcompat活动,我必须实现自己的:

MvxActionBarEventSourceActivity : AppCompatActivity , IMvxEventSourceActivity
{
 ...
}
Run Code Online (Sandbox Code Playgroud)

然后基于可绑定的mvx活动:

MvxActionBarActivity : MvxActionBarEventSourceActivity, IMvxAndroidView
{
 ...
}
Run Code Online (Sandbox Code Playgroud)

应用程序启动很好,我可以看到我的工具栏,但绑定只是"沉默",不起作用.相同的实现工作找到MvvmCross 3.5.

您可以在此处找到完整示例:https: //dl.dropboxusercontent.com/u/19503836/MvvmCross4_Toolbar_Bindings.zip

请指教.

Mar*_*n00 5

您需要覆盖OnCreateViewAttachBaseContext使用MvxAppCompatActivityHelper支持绑定:https://github.com/MvvmCross/MvvmCross-AndroidSupport/blob/master/MvvmCross.Droid.Support.V7.AppCompat/MvxAppCompatActivity.cs#L78

    public override View OnCreateView(View parent, string name, Context context, IAttributeSet attrs)
    {
        var view = MvxAppCompatActivityHelper.OnCreateView(parent, name, context, attrs);
        return view ?? base.OnCreateView(parent, name, context, attrs);
    }

    protected override void AttachBaseContext(Context @base)
    {
        base.AttachBaseContext(MvxContextWrapper.Wrap(@base, this));
    }
Run Code Online (Sandbox Code Playgroud)

有一个样本可以实现Toolbar而不是Actionbar:https://github.com/MvvmCross/MvvmCross-AndroidSupport/tree/master/Samples