MvxAppCompatDialogFragment 中缺少 EnsureBindingContextSet 方法 class

EnsureBindingContextSet method missing from the MvxAppCompatDialogFragment class

我正在尝试使用 MvxAppCompatDialogFragment 和 AlertDialog.Builder 类 创建自定义对话框。我已经查看了我可以在互联网上找到的所有示例,但我仍然停留在这一部分。我发现的每一个工作示例都在重写的 OnCreateDialog 方法中使用了 base.EnsureBindingContextSet 方法。但是每次我使用该方法时,编译器都会给我这个错误:

'MvxAppCompatDialogFragment<MyViewModel>' does not contain a definition for 'EnsureBindingContextSet'

所以我试着寻找其他有这个问题的人。但是无论我多么努力地搜索,无论我使用什么关键字,我都找不到有同样问题的人。我希望有人能帮我解决这个问题。

我使用的MvvmCross版本是6.0.1。这是我的代码中给我带来问题的部分,以防它可能有所帮助。它仍然很空,因为它在我的第一次测试中不起作用。

public override Dialog OnCreateDialog(Bundle savedInstanceState)
{
    base.EnsureBindingContextSet(savedInstanceState);

    var view = this.BindingInflate(Resource.Layout.DurationDialogFragment, null);

    var builder = new AlertDialog.Builder(Activity);

    builder
        .SetView(view)
        .SetPositiveButton("Confirm", (s, e) => { })
        .SetNegativeButton("Cancel", (s, e) => { ViewModel.CloseCommand.Execute(); });

    var dialog = builder.Create();

    dialog.SetCanceledOnTouchOutside(false);

    return dialog;
}

好的,我成功了。我找到了关于如何实现 EnsureBindingContextSet 的源代码并改为使用它。

我实际上已经从 Martin 的 github 页面找到了最新的源代码,看起来 EnsureBindingContextSet 方法不见了。如果你想检查,这里是 link: https://github.com/MvvmCross/MvvmCross/blob/develop/MvvmCross.Android.Support/V7.AppCompat/MvxAppCompatDialogFragment.cs

所以我所做的是输入:

this.EnsureBindingContextIsSet();

并使用智能感知找到要使用的正确 using 语句,即:

using MvvmCross.Droid.Support.V4;

同样使用智能感知,我认为问题在于新的 EnsureBindingContextIsSet 扩展方法不再接受 Bundle 对象作为参数,这导致该方法被删除。

鉴于我在 Internet 上找不到任何关于此问题的线索,我希望这对以后遇到此确切问题的人有所帮助。