2016-02-20 42 views
1

我在Xamarin.Form應用程序中有一個Xamarin ListView。這是如下初始化:Xamarin - 如何從兩個類獲取ListView源數據?

ListView listView = new ListView 
     { 
      HasUnevenRows = true, 
      ItemTemplate = new DataTemplate(typeof(StudentCell)), 
      ItemsSource = register.StudentList, 
      SeparatorColor = Color.FromHex("#ddd") 
     }; 
     listView.ItemSelected += OnSelection; 

我似乎無法在網上找到任何有關如何/如果我可以讓ItemsSource兩個單獨的類。我有一個包含名稱和狀態等數據的學生列表,但需要爲學生列表中的每個項目加載另一個班級的圖像。

有沒有辦法做到這一點?

或者,我製作了一個自定義單元格類型,StudentCell。有沒有辦法從自定義模板中指定綁定到另一個類(不是學生)?考慮

+0

你不能添加一個像StudentImage這樣的屬性到從register.StudentList返回的項目嗎? – Pete

+0

@Pete我不認爲這是可能的C#。我有一個搜索,它似乎是一個'ExpandoObject'可以做到這一點?我會試試看看會發生什麼。 – user2283597

回答

2

一種可能性是,從register.StudentList,可以說其Student類型的,你不應該能夠包含在類中的StudentImage屬性,那麼也許派生一個新類,說StudentWithImageStudent繼承所以它將具有相同的屬性。

然後,您可以將您的StudentImage屬性添加到繼承自Student的此新類。

在返回的結果集上,然後可以枚舉它的所有實例,並通過在其他類上執行查找來將StudentImage屬性設置爲適當的值。

然後,您可以將您的StudentWithImage的列表綁定到您的Xamarin.FormsList,並從一個數據源開始工作。

2

這就是MVVM模式中VM(ViewModel)的用途。它允許您的View(ListView)通過創建一個ViewModel類來顯示來自多個模型(學生和圖像)的數據,該類組合了來自多個源的數據。

就你而言,你可能會創建一個包含Student和Image的StudentViewModel類。然後你將你的ListView綁定到ViewModel類。