Я работаю над проектом форм Xamarin, ориентированным на iOS / Droid / UWP.Мы создаем приложение в реактивной манере и используем прямые привязки моделей.Например, давайте представим, что у нас есть следующий код
public class Product : RealmObject
{
public string Name { get; set; }
}
// Learn more about making custom code visible in the Xamarin.Forms previewer
// by visiting https://aka.ms/xamarinforms-previewer
[DesignTimeVisible(false)]
public partial class MainPage : ContentPage
{
public static string LocalPath = "";
public MainPage()
{
InitializeComponent();
var realm = Realm.GetInstance(Path.Combine(LocalPath, "RealmSample.realm"));
realm.Write(() =>
{
realm.Add(new Product()
{
Name = "Test"
});
});
BindingContext = realm.All<Product>().FirstOrDefault();
}
}
и следующий файл xaml
<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:d="http://xamarin.com/schemas/2014/forms/design"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
x:Class="RealmBindingSample.MainPage">
<StackLayout>
<Entry
Text="{Binding Name}"/>
</StackLayout>
</ContentPage>
Здесь нет ничего особенного.И этот код прекрасно работает на iOS / Droid, и данные сохраняются, как только изменяется значение Entry.Однако в UWP, как только страница загружается, я получаю следующее исключение
Невозможно изменить управляемые объекты вне транзакции записи.
Это ожидаемое поведение в UWP?Я что-то пропустил.
Я установил ядро Realm.Database версии 3.4.0, и файлы FodyWeavers.xml
присутствуют во всех проектах.