Обновление до версии Xamarin.Forms 5.0
В текущем релизе Xamarin.Forms 5 появилось несколько новых элементов управления и функций, включая темы приложения (темную), кисти, CarouselView, RadioButton, Shapes and Paths и SwipeView.
При обновлении приложений до Xamarin.Forms 5 необходимо обратить внимание на некоторые изменения и удаления. Ниже приведен их список:
Требования
- Целевым фреймворком должен быть Android 13 или выше.
- AndroidX теперь используется по умолчанию для Xamarin.Forms. Руководство по переходу с Android Support на AndroidX можно найти в нашей документации здесь.
Visual Studio 2017 больше не поддерживается
Обновления для Android и iOS поставляются только в Visual Studio 2019, и они являются основополагающими для получения последних исправлений безопасности платформы, требуемых Apple и Google. Перед обновлением до Xamarin.Forms 5 установите Visual Studio 2019.
Переименование MasterDetailPage
MasterDetailPage была переименована в FlyoutPage. Это изменение соответствует нашим ценностям разнообразия и инклюзивности. Ранее мы переименовали нашу мастер-ветку на GitHub в main. Это название также более точно отражает поведение элемента управления. Оно также соответствует тому, как мы описываем это поведение в Shell.
Что делать после обновления?
Данное обновление является устаревшим, поэтому ваше приложение будет работать как и раньше. Чтобы принять это изменение, мы рекомендуем вам переименовать MasterDetailPage в ваших проектах в FlyoutPage. Также были изменены названия некоторых других типов и свойств, в том числе:
- MasterDetailPage.Master заменен на FlyoutPage.Flyout
- MasterBehavior заменен на FlyoutLayoutBehavior
Изменения в RadioButton
RadioButton теперь поддерживает установку произвольного содержимого и использование шаблонов элементов управления. Вы можете начать с простого текста:
<StackLayout RadioButtonGroup.GroupName="SimpleRadios" Orientation="Horizontal"> <RadioButton Content="Day"/> <RadioButton Content="Week"/> <RadioButton Content="Month"/> </StackLayout>
И добавлять более сложные пользовательские интерфейсы в соответствии с вашими потребностями в дизайне:
<RadioButton ControlTemplate="{StaticResource CalendarRadioTemplate}"> <RadioButton.Content> <StackLayout HorizontalOptions="Center" VerticalOptions="Center"> <Image Source="{FontImage FontFamily=FontAwesome, Glyph={x:Static local:IconFont.CalendarDay}, Color=#323130,Size=32}"/> <Label Text="Day" TextColor="#323130"/> </StackLayout> </RadioButton.Content> </RadioButton>
Пример XAML шаблона управления находится здесь.
Удаление UIWebView
UIWebView был полностью удален. С марта Apple предупреждала, что использование этого элемента управления устарело, и приложения будут отклоняться уже с конца года. Начиная с версии 4.x, мы перешли в Xamarin.Forms на использование WKWebView по умолчанию, а в версии 4.6 сделали возможным удаление рендерера UIWebView, чтобы процесс проверки Apple не помечал приложения как нарушающие их политику. Тем не менее, сторонние проекты все еще могут использовать UIWebView и провоцировать нарушение. Теперь это элемент был полностью удален, и мы рекомендуем всем библиотекам обязательно перейти на WKWebView.
Что делать после обновления?
Если у вас нет известной потребности в UIWebView, то делать ничего не нужно. Для всех остальных код рендерера доступен на GitHub для копирования в исходный код приложения.
C# UI, Expander и MediaElement перемещены
Эти экспериментальные функции были перенесены (или будут перенесены в ближайшее время) в набор инструментов Xamarin Community Toolkit, который все должны использовать в полной мере. Это библиотека содержит полезные элементы управления Xamarin, эффекты, преобразователи значений и многое другое. Более того, в ней есть даже собственные элементы управления CameraView, Avatar view и RangeSlider. Эти функции и элементы управления продолжают развиваться и совершенствоваться, и пока Xamarin.Forms переходит в расширенный стабильный релиз, мы считаем, что пока их лучше поставлять в дублях. В будущем они могут быть возвращены в основную библиотеку.
Если вы хотите узнать больше, посетите GitHub и канал Discord проекта.
Что делать после обновления?
Если вы использовали эти функции и элементы управления, то добавьте в свой проект последнюю версию Xamarin Community Toolkit. После разрешения новых пространств имен ваш проект снова должен компилироваться. При каждом обновлении NuGets необходимо выполнять полную очистку и сборку.
Удалены пакеты DataPages и Themes
В Xamarin.Forms 2 до перехода в Microsoft были создали прототипы некоторых интересных способов построения пользовательских интерфейсов, управляемых данными. Эти эксперименты поставлялись в виде пакетов предварительного просмотра под названием DataPages и Themes. С тех пор мы продолжали поставлять эти пакеты, но ни работы, ни интереса клиентов к ним не прибавилось. Вместо этого появились такие функции, как App Themes, гораздо более простые в использовании и реализующие темный и светлый режимы, а также общую поддержку тем с использованием динамических стилей. Начиная с Xamarin.Forms 5, мы больше не будем создавать и поставлять эти пакеты.
Что делать после обновления?
Если пакеты установлены и не используются, то их можно удалить.
Что касается использования тем, то переведите свою реализацию на использование динамических стилей и AppThemeBinding.
XFCorePostProcessor.Tasks удален
В этот проект внедряется IL для поддержания совместимости с XF 2.5. Мы уже достаточно далеко ушли от XF 2.5, чтобы это вплетение больше не требовалось.
История релизов
- 10 мая 2023 г. – Xamarin.Forms 5.0.0.2599–pre1 (5.0.0 Service Release 15 Pre Release 1)
- 8 марта 2023 г. – Xamarin.Forms 5.0.0.2578 (5.0.0 Service Release 14)
- 6 декабря 2022 г. – Xamarin.Forms 5.0.0.2545 (5.0.0 Service Release 13)
- 25 июля 2022 г. – Xamarin.Forms 5.0.0.2515 (5.0.0 Service Release 12)
- 8 июня 2022 – Xamarin.Forms 5.0.0.2478 (5.0.0 Service Release 11)
- 29 марта 2022 г. – Xamarin.Forms 5.0.0.2401 (5.0.0 Service Release 10)
- 25 января 2022 г. – Xamarin.Forms 5.0.0.2337 (5.0.0 Service Release 9)
- 10 декабря 2021 г. – Xamarin.Forms 5.0.0.2291 (5.0.0 Service Release 8)
- 15 ноября 2021 г. – Xamarin.Forms 5.0.0.2244 (5.0.0 Service Release 7)
- 15 октября 2021 г. – Xamarin.Forms 5.0.0.2196 (5.0.0 Service Release 6)
- 17 сентября 2021 г. – Xamarin.Forms 5.0.0.2125 (5.0.0 Service Release 5)
- 12 июля 2021 г. – Xamarin.Forms 5.0.0.2083 (5.0.0 Service Release 4)
- 12 февраля 2021 г. – Xamarin.Forms 5.0.0.2012 (5.0.0 Service Release 3)
- 25 января 2021 г. – Xamarin.Forms 5.0.0.1931 (5.0.0 Service Release 2)
- 19 января 2021 – Xamarin.Forms 5.0.0.1905 (5.0.0 Service Release 1)
- 5 января 2021 г. – Xamarin.Forms 5.0.0.1874 (5.0.0)
- 22 декабря 2020 – Xamarin.Forms 5.0.0.1829–pre6 (5.0.0 Pre Release 6)
- 8 декабря 2020 – Xamarin.Forms 5.0.0.1791–pre5 (5.0.0 Pre Release 5)
- 16 ноября 2020 – Xamarin.Forms 5.0.0.1709–pre4 (5.0.0 Pre Release 4)
- 14 октября 2020 – Xamarin.Forms 5.0.0.1558–pre3 (5.0.0 Pre Release 3)
- 7 октября 2020 – Xamarin.Forms 5.0.0.1539–pre2 (5.0.0 Pre Release 2)
- 23 сентября 2020 года – Xamarin.Forms 5.0.0.1487–pre1 (5.0.0 Pre Release 1)
Основные изменения в последних релизах
10 мая 2023 – Xamarin.Forms 5.0.0.2599-pre1 (5.0.0 Service Release 15 Pre Release 1)
- Диспетчер UWP должен использовать внутренний диспетчер ядра для состояния - #15716 (@mattleibow)
- Исправление решения для проектов на файловых системах, чувствительных к регистру - #15727 (@moljac)
- Обновление целевой версии MonoAndroid до 13.0 - #15718 (@jfversluis)
- Исправлено исключение NotSupportedException в Xamarin.Forms.Platform.Android.Platform.DefaultRenderer - #15730 (@thisisthekap)
- Доработка версий зависимостей для цели MonoAndroid13 - #15736 (@jfversluis)
Возникшие проблемы
После обновления до этой версии Xamarin.Forms в результатах сборки могут появиться предупреждения типа «unknown enum constant Scope.LIBRARY_GROUP_PREFIX». На момент написания статьи этот вопрос находится в стадии изучения. Однако это не должно помешать вам собрать свой проект.
8 марта 2023 г. - Xamarin.Forms 5.0.0.2578 (5.0.0 Service Release 14)
- Исправление TitleView в iOS 16 - #15667 (@jfversluis)
- Исправления CollectionView из .NET MAUI - #15697 (@jsuarezruiz)
- Исправление LayoutSubviews рендерера, который может вызывать NRE. - #15670 (@P3PPP)
- Проверка нуля ItemsViewController - #15638 (@reid-kirkpatrick)
- Добавление null-guard в MenuItem для предотвращения NRE - #15636 (@jfversluis)
Более подробную информацию читайте здесь.
- Обновление до версии Xamarin.Forms 5.0
- Требования
- Visual Studio 2017 больше не поддерживается
- Переименование MasterDetailPage
- Изменения в RadioButton
- Удаление UIWebView
- C# UI, Expander и MediaElement перемещены
- Удалены пакеты DataPages и Themes
- XFCorePostProcessor.Tasks удален
- История релизов
- Основные изменения в последних релизах