Метод EnsureBindingContextSet отсутствует в классе MvxAppCompatDialogFragment - PullRequest
0 голосов
/ 03 июня 2018

Я пытаюсь создать пользовательский диалог с использованием классов MvxAppCompatDialogFragment и AlertDialog.Builder.Я просмотрел каждый пример, который мог найти в Интернете, но я застрял в этой части.Каждый из тех рабочих образцов, которые я обнаружил, использовал метод base.EnsureBindingContextSet внутри переопределенного метода OnCreateDialog.Но каждый раз, когда я использую этот метод, компилятор постоянно выдает мне эту ошибку:

'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;
}

1 Ответ

0 голосов
/ 03 июня 2018

Хорошо, я заставил это работать.Я нашел исходный код о том, как был реализован EnsureBindingContextSet, и использовал его вместо этого.

На самом деле я нашел последний исходный код со страницы Мартина на github, и похоже, что метод EnsureBindingContextSet пропал.Вот ссылка, если вы хотите проверить: https://github.com/MvvmCross/MvvmCross/blob/develop/MvvmCross.Android.Support/V7.AppCompat/MvxAppCompatDialogFragment.cs

Итак, я набрал:

this.EnsureBindingContextIsSet();

и использовал intellisense, чтобы найти правильный оператор using для использования, а именно:

using MvvmCross.Droid.Support.V4;

Также используя intellisense, я думаю, что проблема в том, что новый метод расширения EnsureBindingContextIsSet больше не принимает объект Bundle в качестве параметра, что привело к удалению метода.

Видеть какЯ не могу найти никаких следов этой проблемы в Интернете, я надеюсь, что это поможет кому-то, кто столкнется с этой проблемой в будущем.

...