我正在构建Xamarin表单应用程序,并使用XAML,该XAML已数据绑定到包含存储在Realm数据存储中的模型的ViewModel。
当双向数据绑定打开视图时,将引发错误
无法在交易外设置值
包括
InnerException {Realms.RealmOutsideTransactionException:无法设置
交易外的价值
Realms.RealmObje…} Realms.RealmOutsideTransactionException
我不确定为什么数据绑定在加载显示其数据绑定到的Entry对象的View时想要在RealmObject上重新设置值。
默认情况下,模式=双向。我必须将其更改为Mode = OneWay才能获取加载数据绑定数据的视图。
这是一个错误吗?
根据这篇文章,这应该工作。
https://blog.xamarin.com/cross-platform-development-with-xamarin-forms-and-realm/
最佳答案
当您进行双向绑定时,Realm
必须具有活动的Transaction
,如QuickJournal示例的JournalEntryDetailsPage
中所示。
我不确定为什么数据绑定要重新设置该值
RealmObject在加载显示Entry对象的View时
它的数据绑定到。
这也使我感到困惑。这是Xamarin Forms实现双向绑定的方式的怪癖。如果字符串属性为空,则不会触发设置器。但是,如果RealmObject的属性中有一个值,则似乎会触发Xamarin.Forms.Platform.IOS.EntryRender:OnEditingChanged
并尝试再次设置相同的值。我认为这是Xamarin Forms中的错误。它不应将未更改的值传播回至ViewModel。