Невозможно привязать цвет iOS MvvMCross 6.x к MvxColor WithConversion - PullRequest
0 голосов
/ 21 октября 2018

Я довольно новичок в MvvMCross, и у меня возникла проблема с привязкой моего свойства mvx модели представления к цвету фона в iOS.Я создал свой собственный проект с нуля, но чтобы убедиться, что в настройках его нет, я использовал MvxScaffolding для создания нового проекта.

Я получаю сообщение об ошибке:

 [ERROR] (MvxBind) Problem seen during binding execution for binding
 TintColor for Colour - problem ArgumentException: Object of type 
'MvvmCross.UI.MvxColor' cannot be converted to type 'UIKit.UIColor'.

Просмотр модели:

using MvvmCross.UI;

namespace BindingTests.Core.ViewModels.Main
{
    public class MainViewModel : BaseViewModel
    {

        public MvxColor Colour { get { return MvxColors.AliceBlue; }}
    }
}

Просмотр

using System;
using MvvmCross.Platforms.Ios.Presenters.Attributes;
using MvvmCross.Platforms.Ios.Views;
using BindingTests.Core.ViewModels.Main;
using MvvmCross.Binding.BindingContext;

namespace BindingTests.iOS.Views.Main
{
    [MvxFromStoryboard(nameof(MainViewController))]
    [MvxRootPresentation(WrapInNavigationController = true)]
    public partial class MainViewController : BaseViewController<MainViewModel>
    {
        public MainViewController(IntPtr handle) : base(handle)
        {
            var set = this.CreateBindingSet<MainViewController, MainViewModel>();
            set.Bind(LabelWelcome).For(l => l.BackgroundColor).To(vm => vm.Colour).WithConversion("NativeColor");
            set.Apply();
        }
    }
}

У кого-нибудь есть идеи?Я в тупике.Приветствия в продвинутом

Забыл упомянуть, это прекрасно работает с MvvmCross 5.x

1 Ответ

0 голосов
/ 22 октября 2018

MvvmCross 6 поставляется с новым механизмом регистрации плагинов.

У нас возникают два вида проблем:

1) Одна проблема, которую мы не обнаружили до выпуска, состоит в том, что платформа теперь предполагает, что сборки плагинов будут загружены к тому времени, когда онизарегистрированы.К сожалению, мы не можем гарантировать, что (сборки обычно не загружаются средой выполнения до тех пор, пока они не будут явно использованы).

2) Компоновщик не был проблемой раньше, потому что в фреймворке были файлы начальной загрузки, которые обеспечиваликод не был удаленМы добавили Preserve атрибуты к наиболее важным классам, но, видимо, этого недостаточно.

В то время, когда я пишу этот ответ, мы работаем над новой реализацией, вы можете отслеживать статус в этом выпуске .

В качестве обходного пути (и, фактически, для ответа на вопрос), вы можете добавить эту строку в файл LinkerPleaseInclude на iOS (не имеет значения, какой именно метод): var converter = new MvxNativeColorValueConverter();.

...