【问题标题】:Use realm and MVVMLight使用领域和 MVVMLight
【发布时间】:2017-06-14 18:52:32
【问题描述】:

我使用 MVVMLight 在 Xamarin 中进行开发和应用。我的团队使用 iOS 和 Android 本机,而不是 Xamarin Forms。

我们使用 Realm 来存储数据,并希望使用 MVVMLight 将数据绑定到 UI。我们有一个public IRealmCollection<Info> InfoList { get; private set; }

ObservableCollection<T> 有一个GetController 来绑定数据。 (https://mallibone.com/post/mvvm-light-ios-uitableview-binding)

Realm for Xamarin 是否有类似的功能,因此我们可以将数据绑定到 UI?

【问题讨论】:

    标签: xamarin realm


    【解决方案1】:

    不幸的是,MVVMLight 代码库对 IList<T> 的可观察集合有严格的要求,这比 Realm 提供的 API 限制更多。好消息是它是开源的,因此您可以轻松地进行所需的修改以使其正常工作。你需要ObservableTableViewControllerObservableTableViewSource。然后只需将所有 DataSource 属性/字段修改为 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,
        };
    }
    

    【讨论】:

    • 正确理解。我需要下载 MVVMLight 代码库并对其进行修改吗?我更喜欢使用 NuGet 来更新我的包。
    • 你可以同时使用。您对所有内容都使用 NuGet,您只需要下载我链接到的两个类并修改它们 - 给它们不同的名称可能是一个好主意,以避免潜在的混淆。但这些不会影响代码库的其余部分或您使用它的方式。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-04
    • 1970-01-01
    相关资源
    最近更新 更多