Двухстороннее связывание областей в UWP форм Xamarin выдает исключение - PullRequest
0 голосов
/ 16 июня 2019

Я работаю над проектом форм 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 присутствуют во всех проектах.

1 Ответ

1 голос
/ 17 июня 2019

Я получил ответ на этот вопрос в официальных выпусках github библиотеки Realm.Net.

Двухстороннее связывание данных не работает с UWP с Realm 3.4.0, потому что это нестандартная библиотека 1.4 и классы, необходимые для реализации автоматические транзакции были добавлены только в netstandard 2.0. Вы можете обновить Realm до 4.0.0, но имейте в виду, что это потребует обновление вашего проекта UWP до целевого netstandard 2.0.

Проблема была в версии пакета Realm Nuget, которую я использовал. Я использовал Realm.Database nuget последней версии 3.4.0. Как только я заменил пакет на Realm nuget версии 4.0.0, все заработало.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...