Хобрук: Ваш путь к мастерству в программировании

Работает ли MvvmCross в Xamarin Studio?

У меня есть время, чтобы получить прямой ответ на этот вопрос, я много искал и читал, и пробовал много вещей. Иногда это кажется возможным, а в других случаях кажется возможным только путем создания ссылок и чего-то еще, чего я пытаюсь избежать. Я большой поклонник PCL.

Я создал решение с использованием Visual Studio 2012, Xamarin и MvvmCross, которое отлично работает, я могу развернуть его на устройстве iOS, устройстве Droid, Windows --- что у вас есть. Visual Studio может создавать работающие приложения, которые я могу развернуть на определенных платформах.

Однако недавно мне сообщили, что наша компания требует, чтобы при развертывании код был собран на Mac с помощью Xamarin Studio их сервером сборки. Итак, с тех пор я работаю над тем, чтобы открыть и собрать все с помощью Xamarin Studio, и я близок, но печально известная проблема с ICommand — мое последнее препятствие.

Есть ли способ правильно портировать ICommands и библиотеку System.Windows в Xamarin Studio? Я действительно застрял, пока Xamarin не выпустит поддержку PCL?


Ответы:


1

Работает ли MvvmCross в Xamarin Studio?

да

Чтобы доказать это:

  • довольно много видео N+1 показывают, что это используется.
  • множество образцов (все не-nuget) создаются и запускаются из XS

Есть ли способ правильно портировать ICommands и библиотеку System.Windows в Xamarin Studio?

В настоящее время проблема заключается в том, что в стабильной ветке компилятору xamarin не нравится импорт PCL MvxCommand, который наследуется от ICommand.

Трудный способ обойти эту проблему:

  • переписать инструменты Xamarin для поддержки PCL — это то, чем в настоящее время занимаются блестящие, милые и очень умные обезьяны Xamarin :)

Или... немного проще решить эту проблему:

  • замените ссылки nuget на библиотеки, созданные для ПК, ссылками на библиотеки, созданные Xamarin-Mac, — эти библиотеки, созданные Xamarin-Mac, доступны в https://github.com/slodge/MvvmCross-Binaries./

Или... действительно простой способ обойти проблему:

  • вместо использования MvxCommand в моделях представления просто реализуйте свой собственный класс MyCommand для реализации System.Windows.Input.ICommand (например, используйте реализацию на http://www.lines-davies.net/blog/?p=24)

Я действительно застрял, пока Xamarin не выпустит поддержку PCL?

Я так не думаю, но где вы сталкиваетесь с проблемами:

  • пожалуйста, возвращайтесь на такие сайты, как StackOverflow, с одной конкретной проблемой за раз — этот сайт отлично подходит для поиска решений по одному :)
  • поговорите со службой поддержки Xamarin — они, как правило, очень помогают в решении проблем.

Более того, даже если вы застряли в ожидании... Xamarin уже выпустил поддержку PCL для альфа-канала, так что ожидание уже почти закончилось :)

28.06.2013
  • Отлично, Стюарт, большое спасибо за очень хороший, четкий ответ. Цените ваши быстрые ответы. Я не могу дождаться, когда Xamarin получит поддержку PCL. 28.06.2013
  • Не беспокойтесь — если вы просто создадите свою собственную команду, я думаю, она должна работать (у меня работает!). Если вы столкнулись с другими проблемами, пожалуйста, напишите больше вопросов. Если вы можете, пожалуйста, включите некоторые технические детали низкого уровня. например на этом мне действительно пришлось подумать о том, что такое «печально известная ошибка ICommand». Гораздо проще, если вы можете включить описание и некоторые сообщения об ошибках - эта деталь также поможет через несколько месяцев, когда возникнет совершенно другая проблема с ICommand, вызывающая проблемы;) 28.06.2013
  • Стюарт, проблема в том, что стабильная версия Xamarin Studio является реализацией .NET 4.0, а ICommand — функцией 4.5 (она не отображается, пока я не изменю свою целевую платформу на 4.5), и поэтому не распознает ICommand. Поэтому я не могу, так сказать, реализовать System.Windows.Input.ICommand конкретно. Вы говорите, что мне нужно создать свой собственный ICommand, чтобы имитировать интерфейс Microsoft ICommand, а затем реализовать этот интерфейс в моем собственном классе MvxCommandEx, который имитирует ваш класс MvxCommand? 01.07.2013
  • Да - • вместо использования MvxCommand в ваших моделях представлений просто реализуйте свой собственный класс MyCommand для реализации System.Windows.Input.ICommand (например, используйте реализацию на lines-davies.net/blog/?p=24) — просто введите свою команду 01.07.2013
  • Что ж, не удалось заставить это работать с 3-м вариантом (настраиваемый ICommand). Я создал свой собственный интерфейс ICommand, очень простой, затем создал свой собственный MvxCommandEx, который реализовал мой фальшивый интерфейс ICommand, и провел рефакторинг этих изменений во всех моих моделях представления, и он понравился мне при сборке. Но во время выполнения он просто ничего не делает. Кажется, он создает все MvxCommandEx, но когда я нажимаю кнопку, которая была привязана к этому члену модели, он ничего не делает, он не вызывает метод, который был привязан к этой команде... :( Точно не уверен куда идти дальше. 02.07.2013
  • Кстати, мне удалось заставить его работать, отвязав представление от ViewModel, а затем в btnLogin.Click, вызвав команду ViewModel напрямую --- т.е. ((LoginViewModel)ViewModel).LogIn.Execute(null);........ но этот метод очень не-MVVM-y. 02.07.2013
  • Вы слишком много пишете здесь в комментариях - если ваша команда не работает, задайте вопрос об этом. Извините, здесь, в этом «комментарии мелким шрифтом», вам никто не сможет помочь. 03.07.2013
  • Новые материалы

    Основы принципов S.O.L.I.D, Javascript, Git и NoSQL
    каковы принципы S.O.L.I.D? Принципы SOLID призваны помочь разработчикам создавать надежные, удобные в сопровождении приложения. мы видим пять ключевых принципов. Принципы SOLID были разработаны..

    Как настроить Selenium в проекте Angular
    Угловой | Селен Как настроить Selenium в проекте Angular Держите свое приложение Angular и тесты Selenium в одной рабочей области и запускайте их с помощью Mocha. В этой статье мы..

    Аргументы прогрессивного улучшения почти всегда упускают суть
    В наши дни в кругах веб-разработчиков много болтают о Progressive Enhancement — PE, но на самом деле почти все аргументы с обеих сторон упускают самую фундаментальную причину, по которой PE..

    Введение в Джанго Фреймворк
    Схема «работать умно, а не усердно» В этой и последующих статьях я познакомлю вас с тем, что такое фреймворк Django и как создать свое первое приложение с помощью простых и понятных шагов, а..

    Настольный ПК как «одно кольцо, чтобы править всеми» домашних компьютеров
    Вид после 9 месяцев использования С настольных компьютеров все началось, но в какой-то момент они стали «серверами», и мы все перешли на ноутбуки. В прошлом году я столкнулся с идеей настольных..

    Расширенные методы безопасности для VueJS: реализация аутентификации без пароля
    Руководство, которое поможет вам создавать безопасные приложения в долгосрочной перспективе Безопасность приложений часто упускается из виду в процессе разработки, потому что основная..

    стройный-i18следующий
    Представляем стройную оболочку для i18next. Эта библиотека, основанная на i18next, заключает экземпляр i18next в хранилище svelte и отслеживает события i18next, такие как languageChanged,..