【问题标题】:Xamarin Forms TwoWay databinding to RealmObject Throws ErrorXamarin 将双向数据绑定到 RealmObject 引发错误
【发布时间】:2016-10-24 22:50:23
【问题描述】:

我正在构建一个 Xamarin 表单应用程序并使用 XAML,该 XAML 数据绑定到一个 ViewModel,该 ViewModel 包含存储在 Realm 数据存储中的模型。

当双向数据绑定打开视图时会抛出错误

不能在事务之外设置值

其中包括

InnerException {Realms.RealmOutsideTransactionException:无法设置 交易外的价值 Realms.RealmObje…} Realms.RealmOutsideTransactionException

我不确定为什么数据绑定在加载显示其数据绑定到的条目对象的视图时要在 RealmObject 上重新设置值。

默认情况下模式=双向。我必须将其更改为 Mode=OneWay 才能让视图加载数据绑定数据。

这是一个错误吗? 根据这篇文章,这应该可行。

https://blog.xamarin.com/cross-platform-development-with-xamarin-forms-and-realm/

【问题讨论】:

    标签: data-binding xamarin.forms realm


    【解决方案1】:

    当您有双向绑定时,Realm 需要有一个活动的Transaction,如 QuickJournal 示例的JournalEntryDetailsPage 所示。

    我不确定数据绑定为什么要重新设置该值 RealmObject 在加载显示条目对象的视图时 它的数据绑定到。

    这也让我感到困惑。这是 Xamarin Forms 实现双向绑定的方式的一个怪癖。如果字符串属性为空,则不会触发 setter。但是,如果 RealmObject 的属性中有值,它似乎会触发 Xamarin.Forms.Platform.IOS.EntryRender:OnEditingChanged 并尝试再次设置相同的值。我认为这是 Xamarin Forms 中的一个错误。它不应该将未更改的值传播回视图模型。

    【讨论】:

    • 我同意,但没有人回复询问此问题的 xamarin 帖子。 forums.xamarin.com/discussion/69609/…
    • 好吧,表单现在是开源的,所以理论上我们可以修复它,或者至少提出一个改变(争先恐后地寻找时间);-)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-24
    • 1970-01-01
    • 1970-01-01
    • 2013-02-24
    相关资源
    最近更新 更多