2017-06-14 83 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的一切,你只需要下载我链接和修改这两个类 - 可能会给他们不同的名字以避免潜在的混淆是一个好主意。但这些不会影响代码库的其余部分或使用它的方式。 –