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