2017-06-14 78 views
0

我使用MVVMLight在Xamarin中進行開發和應用。我的團隊使用iOS和Android本地,所以不是Xamarin Forms。使用realm和MVVMLight

我們使用Realm來存儲數據,並希望使用MVVMLight將數據綁定到UI。我們有public IRealmCollection<Info> InfoList { get; private set; }

ObservableCollection<T>有一個GetController來綁定數據。 (https://mallibone.com/post/mvvm-light-ios-uitableview-binding

Xamarin是否有類似的東西,因此我們可以將數據綁定到UI?

回答

1

不幸的是,MVVMLight代碼庫對可觀察集合的要求很高,其中IList<T>比Realm提供的API更具有限制性。好消息是它是開源的,所以你可以很容易地進行必要的修改以使其工作。你需要ObservableTableViewControllerObservableTableViewSource。然後修改所有數據源屬性/字段爲IReadOnlyList<T>而不是IList<T>。然後GetController擴展方法可以被修改爲:

public static ObservableTableViewController<TItem> GetController<TItem>(
    this IReadOnlyList<TItem> collection, 
    Func<NSString, UITableViewCell> createCellDelegate, 
    Action<UITableViewCell, TItem, NSIndexPath> bindCellDelegate, 
    string reuseId = null) 
{ 
    return new ObservableTableViewController<TItem> 
    { 
     DataSource = collection, 
     CreateCellDelegate = createCellDelegate, 
     BindCellDelegate = bindCellDelegate, 
     ReuseId = reuseId, 
    }; 
} 
+0

要理解它正確。我是否需要下載MVVMLight代碼庫並修改它或? 我更喜歡使用NuGet來更新我的軟件包。 – Kimdv

+1

您可以同時使用兩者。你使用NuGet的一切,你只需要下載我鏈接和修改這兩個類 - 可能會給他們不同的名字以避免潛在的混淆是一個好主意。但這些不會影響代碼庫的其餘部分或使用它的方式。 –