2013-07-24 74 views
1

我有一個項目模板,它將顯示一個List<IGrouping<string, string>>。爲了做到這一點,我需要將ItemsSource綁定到當前的綁定上下文中,在WPF中,我會這樣做,就像{Binding DataContext}我該如何在MvvmCross中執行此操作?綁定到當前的綁定上下文?

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:local="http://schemas.android.com/apk/res-auto" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content"> 
    <TextView 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    local:MvxBind="Text Key"/> !**IGrouping.Key**! 
    <Mvx.MvxLinearLayout 
    android:id="@+id/items" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:orientation="vertical" 
    local:MvxBind="ItemsSource DataContext" !**This doesn't work, should bind IGrouping as IEnumerable<string>**! 
    local:MvxItemTemplate="@layout/item_myitem"/> 
</LinearLayout> 

回答

2

您可以通過提供一個空路徑來綁定到當前源。

要做到這一點,我覺得最好的語法就是使用「。」。

<Mvx.MvxLinearLayout 
    android:id="@+id/items" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:orientation="vertical" 
    local:MvxBind="ItemsSource ." 
    local:MvxItemTemplate="@layout/item_myitem"/> 

然而,有些人喜歡用一個空字符串 - 雖然我覺得這有點不太可讀

<Mvx.MvxLinearLayout 
    android:id="@+id/items" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:orientation="vertical" 
    local:MvxBind="ItemsSource" 
    local:MvxItemTemplate="@layout/item_myitem"/> 

此選項 - 以及更多之外 - 在數據綁定文章中討論 -

https://github.com/slodge/MvvmCross/wiki/Databinding

(注:空字符串結合用的NuGet v3.0.9但打碎應該在v3.0.10中修復 - 參見Error when making bind ObservableCollection<string> for a MvxListView