在Droid片段中使用MvvmCross CreateBindingSet

时间:2017-07-23 15:31:04

标签: android-fragments mvvmcross

在.Droid下面有以下片段:

public class DigestItemFragment : MvxFragment<DigestItemViewModel>

在此范围内,我为一个以编程方式创建的按钮设置了一个绑定。

public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
    this.EnsureBindingContextIsSet(savedInstanceState);

    View view = this.BindingInflate(Resource.Layout.DigestItemFragment, null);

    LinearLayout ls = view.FindViewById<LinearLayout>(Resource.Id.lakeside);
    Button btn = new Button(container.Context);
    string buttonText = "Get Down";
    btn.SetHeight(100);
    btn.SetWidth(300);
    btn.SetText(buttonText.ToCharArray(), 0, buttonText.Length);
    btn.SetBackgroundColor(Color.Gray);
    btn.SetPadding(20, 20, 20, 20);
    ls.AddView(btn);

    var owner = this as IMvxBindingContextOwner;
    var set = owner.CreateBindingSet<IMvxBindingContextOwner, DigestItemViewModel>();
    set.Bind(btn)
       .To(vm => vm.TimeSlotButtonOkCommand)
       .WithFallback(btn);
    set.Apply();

    return view;
}

单击该按钮时,我可以在DigestItemViewModel中调用TimeSlotButtonOkCommand,但是,视图模型的所有属性值似乎都为null。

这个问题的一个可能原因可能是我如何通过使用IMvxBindingContextOwner而不是DigestItemFragment创建绑定集(请参阅下面的代码片段),但遗憾的是我在创建绑定时无法弄清楚如何使用DigestItemFragment集。

var set = owner.CreateBindingSet<IMvxBindingContextOwner, DigestItemViewModel>();

关于我做错了什么的想法以及为什么DigestItemViewModel属性都在TimeSlotButtonOkCommand中设置为null?

1 个答案:

答案 0 :(得分:0)

抱歉...我的错误。在创建片段列表时,我没有正确初始化相关的视图模型。