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 上找不到任何关于此问题的线索,我希望这对以后遇到此确切问题的人有所帮助。
我正在尝试使用 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 上找不到任何关于此问题的线索,我希望这对以后遇到此确切问题的人有所帮助。