2016-04-21 74 views
0

在我xamarin.droid應用我有MvxRecyclerViewMvxRecyclerView項目具有空視圖模型

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

我可以看到碎片渲染正確,但ViewMo del由於某種原因未被定義。

我錯過了什麼?

+0

MvxFragments不是通過XML充氣的,或者它們是好的,但它們永遠不會有附加的ViewModel。 – Cheesebaron

+0

也許這是一個錯字,但我看到你的片段被稱爲'SymbolItemFragment',但是你的ViewModel是'SymboltemViewModel'在ViewModel的Item中缺少'I'。 – pnavk

+0

@ Cheesebaron明白了。在這種情況下,如何在ItemsSource的代碼隱藏中設置所有綁定? – Artiom

回答

0

至於@CheeseBaron中

MvxFragments不通過XML充氣,或好他們,但他們 永遠不會有附加一個ViewModel問題的評論稱。

因此,至今沒有解決方案。

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;   
} 
+0

不幸的是,它沒有幫助。 ViewModel屬性仍然爲空。如果基本活動是「MvxActivity」而不是「MvxFragmentActivity」,它會有所不同嗎? – Artiom

+0

嗯好的。那麼我猜,痛苦點是在回收者視圖內使用碎片。我不確定這種情況是否實施。我從來沒有用過這種方式。 –

+0

謝謝。我在佈局中綁定錯了,它不起作用。如果沒有任何幫助,我可能會使用RecyclerView。 – Artiom

相關問題