MvxRecyclerView项目具有null ViewModel

时间:2016-04-21 13:44:40

标签: c# android xamarin xamarin.android mvvmcross

在我的xamarin.droid应用程序中,我有MvxRecyclerView

的下一个布局
<MvxRecyclerView 
      ...
      local:MvxItemTemplate="@layout/symbol_item_fragment"
      local:MvxBind="ItemsSource Items" />

symbol_item_fragment定义为

<?xml version="1.0" encoding="utf-8"?>
<fragment 
      ...
      android:name="mobile.droid.company.fragments.SymbolItemFragment" />

我将SymbolItemFragment定义为

[Register("mobile.droid.company.fragments.SymbolItemFragment")]
public class SymbolItemFragment : MvxFragment<SymbolItemViewModel>
{
    public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
    {
        base.OnCreateView(inflater, container, savedInstanceState);
        var view = this.BindingInflate(Resource.Layout.symbol_item_view, null);

       //ViewModel is null

       return view;        
    }
}

我可以看到片段是正确呈现的,但是由于某种原因没有为它们定义ViewModel。

我错过了什么?

2 个答案:

答案 0 :(得分:0)

我认为扩展方法EnsureBindingContextIsSet()会解决它。

public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
    this.EnsureBindingContextIsSet (savedInstanceState);
    base.OnCreateView(inflater, container, savedInstanceState);
    var view = this.BindingInflate(Resource.Layout.symbol_item_view, null);

   return view;        
}

答案 1 :(得分:0)

正如@CheeseBaron在对问题的评论中所说的那样

  

MvxFragments不能通过XML充气,或者它们是,但是   他们没有连接ViewModel。

所以,到目前为止还没有这种方法的解决方案。