Xamarin.Forms 5.0.0.1487-pre1 (5.0.0 Pre Release 1) Release Notes

Getting Started | What's New | Breaking Changes | API Changes | Blogs | Thank you | Feedback | Open Source

Getting Ready for Xamarin.Forms 5

Xamarin.Forms 5 brings to stable release several new controls and features including App Themes (Dark Mode), Brushes, CarouselView, RadioButton, Shapes and Paths, and SwipeView.

RadioButton now supports setting any content and using control templates. You can start with simple text:

<StackLayout
    RadioButtonGroup.GroupName="SimpleRadios"
    Orientation="Horizontal">
    <RadioButton Content="Day"/>
    <RadioButton Content="Week"/>
    <RadioButton Content="Month"/>
</StackLayout>

And add more complex UI to match your design needs:

<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>

The control template XAML is here.

RadioButtons image

As this is the first preview of a major version, we want to bring special attention to some of the changes introduced as well. As you look at upgrading your applications to Xamarin.Forms 5, there are some changes and removals to be aware of.

Please provide feedback on these changes as you update so we can help make this as smooth of a transition as possible.

Below is an itemized list:

Visual Studio 2017 No Longer Supported

Updates to Android and iOS are only delivered to Visual Studio 2019, and these are fundamental for getting the latest platform security fixes features required by Apple and Google. Before updating to Xamarin.Forms 5, install Visual Studio 2019.

MasterDetailPage Renamed

MasterDetailPage has been renamed to FlyoutPage. This change is in accordance with our values of diversity and inclusivity. We previously renamed our master branch on GitHub to main. The name also more closely reflects the behavior of the control. It is also in keeping with how we describe the behavior in Shell.

What should I do after upgrading?

This is a deprecation, so your app will work as before. To adopt this change, we recommend you rename MasterDetailPage in your projects to FlyoutPage. A few other types and property names have been updated as well including:

  • MasterDetailPage.Master changed to FlyoutPage.Flyout
  • MasterBehavior changed to FlyoutLayoutBehavior

UIWebView Removed

UIWebView has been completely removed. Since March, Apple has been warning that usage of this control was deprecated and apps would be rejected beginning later in the year. Since 4.x, we switched the default usage in Xamarin.Forms to WKWebView, and in 4.6, we made it possible to remove the UIWebView renderer to avoid Apple's review process from flagging apps as violating their policy. Still, third-party projects may still make use of UIWebView and trigger the violation. Now it is completely gone, and we recommend all libraries to make sure to switch to WKWebView as well.

What should I do after upgrading?

If you don't have a known need for UIWebView, then you don't need to do anything. For anyone else, the renderer code is available on GitHub to be copied into our application source.

C# UI, Expander, and MediaElement Moved

These experimental features have been (or will be soon) migrated to the Xamarin Community Toolkit which everyone should be taking full advantage of. It's a wonderful library of extremely useful Xamarin controls, effects, value converters, and more. In fact, it even has a native CameraView, Avatar view, and RangeSlider control. These features and controls are continuing to grow and improve, and while Xamarin.Forms moves into an extended stable release, we feel it's better for those to ship for now in the tookit. At a future time, they may be brought back into the core library.

As a "community" toolkit, it is being maintained and supported by a talented group of both community and Microsoft engineers. A big thanks to Steven Thewissen, Andrei Misuikevich, Javier Suarez Ruiz, and Gerald Versluis for all your hard work making this happen, as well as all those who have been contributing and reviewing.

If you're interested in learning more, check out GitHub and the project's Discord channel.

What should I do after upgrading?

If you have been using these features and controls, then add the latest Xamarin Community Toolkit to your project. After you resolve the new namespaces, your project should once again compile. Any time you update NuGets, you should do a full clean and build.

DataPages and Themes Packages Removed

In Xamarin.Forms 2, before joining Microsoft, we prototyped some interesting ways to build data driven UIs. These experiments were shipped as preview packages called DataPages and Themes. Since then, we have continued shipping the packages, but no work or customer interest has grown around them. Instead, features such as App Themes are much easier to use and implement dark and light mode, as well as general theme support using dynamic styles. As of Xamarin.Forms 5, we will no longer be building and shipping these packages.

What should I do after upgrading?

If you have the packages installed and are not using them, then you can safely remove them.

For themes related usage, migrate your implementation to using dynamic styles and AppThemeBinding.

For anything else, please contact us.

XFCorePostProcessor.Tasks Removed

This project injects IL to maintain XF 2.5 compatibility. We're far enough away from XF 2.5 now that this weaving should no longer be necessary.

What's New in this Release

Roadmap

Brushes

CarouselView

  • "[Core,iOS,Android] Remove experimental flags Carousel, Swipe, Shapes, Brush" (#12068)
  • GitHub #11081 - "[Bug] CarouselView should not animate an initial Position on Android" (#11173)
  • GitHub #8641 - "[Bug] CarouselView doesn't loop" (#9453)

CollectionView

  • "[Core,iOS,Android] Remove experimental flags Carousel, Swipe, Shapes, Brush" (#12068)
  • GitHub #10454 - "[Bug] CollectionView ChildAdded" (#10812)
  • GitHub #10801 - "System.ObjectDisposedException: Cannot access a disposed object 'Xamarin.Forms.Platform.Android.FastRenderers.LabelRenderer'" (#12114)
  • GitHub #11081 - "[Bug] CarouselView should not animate an initial Position on Android" (#11173)
  • GitHub #11311 - "[Regression] CollectionView NSRangeException" (#11402)
  • GitHub #11794 - "[Bug] RefreshView with CollectionView child cannot contain GridItemsLayout with Span greater than 1 in combination with EmptyView on UWP" (#11913)
  • GitHub #11908 - "[Bug] [UWP] ItemsViewRenderer doesn't clean up CollectionViewSource correctly" (#11919)
  • GitHub #8641 - "[Bug] CarouselView doesn't loop" (#9453)
  • GitHub #9088 - "[Bug] SwipeView items conflict with Shell menu swipe in from left, on real iOS devices" (#9144)

Dark Mode/App Themes

Dual Screen

  • "Remove Compact Window from Dual Screen APIs" (#12093)

Maps

  • GitHub #9088 - "[Bug] SwipeView items conflict with Shell menu swipe in from left, on real iOS devices" (#9144)

Shapes

Shell

  • "[Core,iOS,Android] Remove experimental flags Carousel, Swipe, Shapes, Brush" (#12068)
  • "[Tizen] Enhances the shell renderer" (#12119)
  • GitHub #10377 - "[Bug] RefreshView not showing ActivityIndicator on page appearing with XF Shell " (#11339)
  • GitHub #10638 - "[Bug] Shell.Current.GoToAsync("..", true) has no animation like Shell.Current.Navigation.PopAsync()" (#12039)
  • GitHub #10729 - "[Enhancement] Provide an easy way to get the Current Page at Shell" (#10979)
  • GitHub #11894 - "[Bug] SearchHandler.Focused / Unfocused event was not delivered" (#11895)
  • GitHub #1989 - "Disappearing ActivityIndicators in TableView on iOS" (#11339)
  • GitHub #6966 - "[Bug] Text binding on MenuItem does not bind on iOS" (#11987)
  • GitHub #8527 - "[Bug] Fix the Shell story when running on iPad in multi task mode" (#12097)
  • GitHub #8881 - "[Bug] Shell Flyout - Weird line at the bottom of the items in iOS" (#9429)
  • GitHub #9088 - "[Bug] SwipeView items conflict with Shell menu swipe in from left, on real iOS devices" (#9144)
  • GitHub #9205 - "[Bug] Shell MenuItem Text Binding values not updated on Android" (#11987)

SwipeView

  • GitHub #10679 - "[Bug] SwipeView crash with NullReferenceException" (#10682)
  • GitHub #11209 - "[Bug] [iOS][SwipeView] Swipe view not handling tap gesture events until swiped" (#11217)
  • GitHub #11286 - "[Bug] SwipeItem clicked event not working" (#11298)
  • GitHub #11314 - "Cannot swipe the swipeview inside a Listview[Bug] " (#11358)
  • GitHub #11333 - "[Bug] SwipeView does not work on Android if child has TapGestureRecognizer" (#11340)
  • GitHub #11737 - "[Bug] SwipeView Closes After Command Executes Despite SwipeBehaviorOnInvoked="RemainOpen" (iOS)" (#11762)
  • GitHub #8941 - "[Bug] [SwipeView] Changing SwipeMode changes the width of the SwipeItem" (#9574)
  • GitHub #8974 - "[Enhancement] [SwipeView] Allow tolerance and swipe length to be set for the swipe action" (#9574)
  • GitHub #9088 - "[Bug] SwipeView items conflict with Shell menu swipe in from left, on real iOS devices" (#9144)

Visual

  • "[Tizen] Enhances the shell renderer" (#12119)
  • "Duo SDK memory leak and Performance fixes" (#11837)
  • GitHub #9088 - "[Bug] SwipeView items conflict with Shell menu swipe in from left, on real iOS devices" (#9144)

Other Enhancements

  • "Easing type converter" (#11601)
  • GitHub #8279 - "[Feature requested] ListView do not ScrollTo a group when there is no child of this group." (#8310)
  • GitHub #8405 - "[Enhancement] Allow everyone access to the WeakEventManager class" (#12063)

Features in Preview

Current experimental flags

Are you on the cutting edge? Try out ALL of our experimental features now using these flags! Read more about experimental flags.

  • Shell_UWP_Experimental

UWP Shell

Try it with Forms.SetFlags("Shell_UWP_Experimental");
  • "[Core,iOS,Android] Remove experimental flags Carousel, Swipe, Shapes, Brush" (#12068)
  • GitHub #9088 - "[Bug] SwipeView items conflict with Shell menu swipe in from left, on real iOS devices" (#9144)

Release History

  • Wednesday, September 23, 2020 - Xamarin.Forms 5.0.0.1487-pre1 (5.0.0 Pre Release 1)

Wednesday, September 23, 2020 - Xamarin.Forms 5.0.0.1487-pre1 (5.0.0 Pre Release 1)

Issues Fixed

Additional fixes included in this release

  • "[Build] Update sigining" (#11901)
  • "[Core,iOS,Android] Remove experimental flags Carousel, Swipe, Shapes, Brush" (#12068)
  • "[Core] Add an overload for async ImageSource" (#11906)
  • "[Housekeeping] More cleanup" (#11999)
  • "[Tizen] Adds the DisplayResolutionUnit" (#12074)
  • "[Tizen] Enhances the EntryRenderer" (#11978)
  • "[Tizen] Enhances the shell renderer" (#12119)
  • "[Tizen] Fix Assembly registration issue" (#12130)
  • "[Tizen] Fixed getting the device type" (#12133)
  • "[Tizen] Fixed Tizen 4.0 regression issue" (#12132)
  • "[Tizen] Update profile unified font size scaling" (#11979)
  • "[WPF] Fix FormsPanel MeasureOverride negative requested size" (#10653)
  • "[X] Add a TrySetPropertyValue overload for HR" (#12043)
  • "[xamlc] add a new ResourceLoader.IsEnabled check" (#11754)
  • "[xamlc] fix duplicate Mono.Cecil search paths" (#12030)
  • "Add compliance" (#11612)
  • "Bump UWP to 19041" (#11940)
  • "Duo SDK memory leak and Performance fixes" (#11837)
  • "EasingDesignTypeConverter" (#11697)
  • "Make CancelAnimations an extension method" (#11884)
  • "Make Frames with Labels work in ListViews again" (#11976)
  • "Reinstate loading of local HTML files in WKWebViewRenderer" (#12029)
  • "Remove Compact Window from Dual Screen APIs" (#12093)
  • "Templated RadioButtons and RadioButtonGroups" (#11628)

Breaking Changes

Namespace Xamarin.Forms

Type Changed: Xamarin.Forms.CarouselView

Removed method:

public static void VerifyCarouselViewFlagEnabled (string constructorHint, string memberName);

Type Changed: Xamarin.Forms.DropGestureRecognizer

Removed method:

public System.Threading.Tasks.Task SendDrop (DropEventArgs args, VisualElement element);

Type Changed: Xamarin.Forms.IMasterDetailPageController

Removed properties:

public bool CanChangeIsPresented { get; set; }
public Rectangle DetailBounds { get; set; }
public bool ShouldShowSplitMode { get; }

Removed event:

public event System.EventHandler<BackButtonPressedEventArgs> BackButtonPressed;

Removed method:

public virtual void UpdateMasterBehavior ();

Type Changed: Xamarin.Forms.MasterDetailPage

Modified base type:

-Xamarin.Forms.Page
+Xamarin.Forms.FlyoutPage

Removed interface:

Xamarin.Forms.IElementConfiguration<MasterDetailPage>

Removed fields:

public static BindableProperty IsGestureEnabledProperty;
public static BindableProperty IsPresentedProperty;

Removed properties:

public bool CanChangeIsPresented { get; set; }
public Page Detail { get; set; }
public Rectangle DetailBounds { get; set; }
public bool IsGestureEnabled { get; set; }
public bool IsPresented { get; set; }
public bool ShouldShowSplitMode { get; }

Removed events:

public event System.EventHandler<BackButtonPressedEventArgs> BackButtonPressed;
public event System.EventHandler IsPresentedChanged;

Removed methods:

public virtual bool ShouldShowToolbarButton ();
public virtual void UpdateMasterBehavior ();

Type Changed: Xamarin.Forms.RadioButton

Modified base type:

-Xamarin.Forms.Button
+Xamarin.Forms.TemplatedView

Removed interfaces:

IButtonController
Xamarin.Forms.IElementConfiguration<Button>
IImageController
IImageElement

Removed field:

public static const string IsCheckedVisualState = "IsChecked";

Type Changed: Xamarin.Forms.SwipeView

Removed method:

public static void VerifySwipeViewFlagEnabled (string constructorHint, string memberName);

Type Changed: Xamarin.Forms.ViewExtensions

Modified methods:

 public void CancelAnimations (---this ---VisualElement view)

Removed Type Xamarin.Forms.Expander

Removed Type Xamarin.Forms.ExpanderState

Removed Type Xamarin.Forms.FileMediaSource

Removed Type Xamarin.Forms.FileMediaSourceConverter

Removed Type Xamarin.Forms.IMediaElementController

Removed Type Xamarin.Forms.MediaElement

Removed Type Xamarin.Forms.MediaElementState

Removed Type Xamarin.Forms.MediaSource

Removed Type Xamarin.Forms.MediaSourceConverter

Removed Type Xamarin.Forms.SeekRequested

Removed Type Xamarin.Forms.StateRequested

Removed Type Xamarin.Forms.UriMediaSource

Namespace Xamarin.Forms.PlatformConfiguration.TizenSpecific

Removed Type Xamarin.Forms.PlatformConfiguration.TizenSpecific.BufferingProgressUpdatedEventArgs

Removed Type Xamarin.Forms.PlatformConfiguration.TizenSpecific.DisplayAspectMode

Removed Type Xamarin.Forms.PlatformConfiguration.TizenSpecific.IMediaPlayer

Removed Type Xamarin.Forms.PlatformConfiguration.TizenSpecific.IPlatformMediaPlayer

Removed Type Xamarin.Forms.PlatformConfiguration.TizenSpecific.IVideoOutput

Removed Type Xamarin.Forms.PlatformConfiguration.TizenSpecific.PlaybackState

Removed Type Xamarin.Forms.PlatformConfiguration.TizenSpecific.VideoOuputType

Namespace Xamarin.Forms.Platform.Android

Type Changed: Xamarin.Forms.Platform.Android.CarouselViewRenderer

Removed field:

protected Xamarin.Forms.CarouselView Carousel;

Type Changed: Xamarin.Forms.Platform.Android.RadioButtonRenderer

Removed interfaces:

Android.Views.View.IOnAttachStateChangeListener
Android.Views.View.IOnClickListener
Android.Views.View.IOnTouchListener
IButtonLayoutRenderer

Modified properties:

-protected Xamarin.Forms.Button Element { get; set; }
+protected Xamarin.Forms.RadioButton Element { get; +++set;+++ }

Removed methods:

protected virtual void OnElementChanged (Xamarin.Forms.Platform.Android.ElementChangedEventArgs<Xamarin.Forms.Button> e);
protected override void OnLayout (bool changed, int l, int t, int r, int b);

Type Changed: Xamarin.Forms.Platform.Android.ResourceManager

Modified methods:

-public void Init (System.Reflection.Assembly masterAssembly)
+public void Init (System.Reflection.Assembly mainAssembly)

Type Changed: Xamarin.Forms.Platform.Android.ViewExtensions

Removed method:

public static void SetClipToOutline (this Android.Views.View view, bool value, Xamarin.Forms.VisualElement element);

Removed Type Xamarin.Forms.Platform.Android.MediaElementRenderer

Namespace Xamarin.Forms.Platform.Android.AppCompat

Type Changed: Xamarin.Forms.Platform.Android.AppCompat.MasterDetailPageRenderer

Modified base type:

-AndroidX.DrawerLayout.Widget.DrawerLayout
+Xamarin.Forms.Platform.Android.FlyoutPageRenderer

Removed methods:

protected override void Dispose (bool disposing);
protected override void OnAttachedToWindow ();
protected override void OnDetachedFromWindow ();
protected virtual void OnElementChanged (Xamarin.Forms.VisualElement oldElement, Xamarin.Forms.VisualElement newElement);
protected override void OnLayout (bool changed, int l, int t, int r, int b);
protected virtual void SetAutomationId (string id);
protected virtual void SetContentDescription ();

Namespace Xamarin.Forms.Platform.Tizen

Type Changed: Xamarin.Forms.Platform.Tizen.INavigationView

Modified properties:

-public abstract ElmSharp.EvasObject Header { get; set; }
+public abstract Xamarin.Forms.View Header { get; set; }

Type Changed: Xamarin.Forms.Platform.Tizen.IShellTabs

Removed properties:

public ElmSharp.EvasObject TargetView { get; }
public ShellTabsType Type { get; set; }

Type Changed: Xamarin.Forms.Platform.Tizen.NavigationDrawer

Modified base type:

-Xamarin.Forms.Platform.Tizen.Native.Box
+ElmSharp.Box

Removed property:

public bool IsLock { get; set; }

Type Changed: Xamarin.Forms.Platform.Tizen.NavigationView

Removed constructor:

public NavigationView (ElmSharp.EvasObject parent);

Modified properties:

-public virtual final ElmSharp.EvasObject Header { get; set; }
+public virtual final Xamarin.Forms.View Header { get; set; }

Type Changed: Xamarin.Forms.Platform.Tizen.ShellItemRenderer

Removed constructor:

public ShellItemRenderer (IFlyoutController flyoutController, Xamarin.Forms.ShellItem item);

Removed properties:

public ElmSharp.Color BackgroundColor { get; set; }
public Native.Box Control { get; }

Removed methods:

protected virtual ShellSectionNavigation CreateShellSectionNavigation (IFlyoutController flyoutController, Xamarin.Forms.ShellSection section);
public void SetCurrentItem (Xamarin.Forms.ShellSection section);
public void UpdateCurrentItem (Xamarin.Forms.ShellSection section);

Type Changed: Xamarin.Forms.Platform.Tizen.ShellMoreToolbar

Removed constructor:

public ShellMoreToolbar (ShellItemRenderer renderer);

Removed property:

public int Height { get; }

Removed methods:

public Xamarin.Forms.ShellSection RemoveFirst ();
public void RemoveItem (Xamarin.Forms.ShellSection section);

Type Changed: Xamarin.Forms.Platform.Tizen.ShellNavBar

Modified base type:

-Xamarin.Forms.Platform.Tizen.Native.Box
+ElmSharp.Box

Removed constructor:

public ShellNavBar (IFlyoutController flyoutController);

Type Changed: Xamarin.Forms.Platform.Tizen.ShellRenderer

Removed methods:

protected virtual ShellItemRenderer CreateShellItem (Xamarin.Forms.ShellItem item);

Type Changed: Xamarin.Forms.Platform.Tizen.ShellSectionRenderer

Removed properties:

public ElmSharp.Color BackgroundColor { get; set; }
public Native.Box Control { get; }
public ElmSharp.Color ForegroundColor { get; set; }

Type Changed: Xamarin.Forms.Platform.Tizen.ShellTabs

Removed properties:

public ElmSharp.EvasObject TargetView { get; }
public ShellTabsType Type { get; set; }

Type Changed: Xamarin.Forms.Platform.Tizen.ThemeConstants

Type Changed: Xamarin.Forms.Platform.Tizen.ThemeConstants.Common.Shell.Resources.Shell

Type Changed: Xamarin.Forms.Platform.Tizen.ThemeConstants.Common.Shell.Resources.Resources

Modified fields:

-public const string BackIcon = "Xamarin.Forms.Platform.Tizen.Resource.arrow_left.png";
+public const string BackIcon = "Resource.arrow_left.png";
-public const string DotsIcon = "Xamarin.Forms.Platform.Tizen.Resource.dots_horizontal.png";
+public const string DotsIcon = "Resource.dots_horizontal.png";
-public const string MenuIcon = "Xamarin.Forms.Platform.Tizen.Resource.menu.png";
+public const string MenuIcon = "Resource.menu.png";

Removed Type Xamarin.Forms.Platform.Tizen.AspectToDisplayAspectModeConverter

Removed Type Xamarin.Forms.Platform.Tizen.Group

Removed Type Xamarin.Forms.Platform.Tizen.IMediaViewProvider

Removed Type Xamarin.Forms.Platform.Tizen.Item

Removed Type Xamarin.Forms.Platform.Tizen.MediaElementExtension

Removed Type Xamarin.Forms.Platform.Tizen.MediaElementRenderer

Removed Type Xamarin.Forms.Platform.Tizen.ShellSectionNavigation

Namespace Xamarin.Forms.Platform.Tizen.Native

Removed Type Xamarin.Forms.Platform.Tizen.Native.EmbeddingControls

Removed Type Xamarin.Forms.Platform.Tizen.Native.LayoutCanvas

Removed Type Xamarin.Forms.Platform.Tizen.Native.MediaPlayer

Removed Type Xamarin.Forms.Platform.Tizen.Native.MediaPlayerImpl

Removed Type Xamarin.Forms.Platform.Tizen.Native.MillisecondToTextConverter

Removed Type Xamarin.Forms.Platform.Tizen.Native.ProgressToBoundTextConverter

Namespace Xamarin.Forms.Platform.UWP

Type Changed: Xamarin.Forms.Platform.UWP.CarouselViewRenderer

Removed property:

protected Xamarin.Forms.CarouselView Carousel { get; }

Type Changed: Xamarin.Forms.Platform.UWP.ItemsViewRenderer`1

Removed method:

protected virtual void FindScrollViewer (Windows.UI.Xaml.Controls.ListViewBase listView);

Type Changed: Xamarin.Forms.Platform.UWP.MasterDetailControl

Modified base type:

-Windows.UI.Xaml.Controls.Control
+Xamarin.Forms.Platform.UWP.FlyoutPageControl

Removed fields:

public static Windows.UI.Xaml.DependencyProperty CollapseStyleProperty;
public static Windows.UI.Xaml.DependencyProperty CollapsedPaneWidthProperty;
public static Windows.UI.Xaml.DependencyProperty ContentTogglePaneButtonVisibilityProperty;
public static Windows.UI.Xaml.DependencyProperty DetailProperty;
public static Windows.UI.Xaml.DependencyProperty DetailTitleIconProperty;
public static Windows.UI.Xaml.DependencyProperty DetailTitleProperty;
public static Windows.UI.Xaml.DependencyProperty DetailTitleViewProperty;
public static Windows.UI.Xaml.DependencyProperty DetailTitleViewVisibilityProperty;
public static Windows.UI.Xaml.DependencyProperty DetailTitleVisibilityProperty;
public static Windows.UI.Xaml.DependencyProperty IsPaneOpenProperty;
public static Windows.UI.Xaml.DependencyProperty MasterProperty;
public static Windows.UI.Xaml.DependencyProperty MasterTitleProperty;
public static Windows.UI.Xaml.DependencyProperty MasterTitleVisibilityProperty;
public static Windows.UI.Xaml.DependencyProperty MasterToolbarVisibilityProperty;
public static Windows.UI.Xaml.DependencyProperty ShouldShowNavigationBarProperty;
public static Windows.UI.Xaml.DependencyProperty ShouldShowSplitModeProperty;
public static Windows.UI.Xaml.DependencyProperty ToolbarBackgroundProperty;
public static Windows.UI.Xaml.DependencyProperty ToolbarForegroundProperty;

Removed properties:

public Xamarin.Forms.PlatformConfiguration.WindowsSpecific.CollapseStyle CollapseStyle { get; set; }
public double CollapsedPaneWidth { get; set; }
public Windows.UI.Xaml.Visibility ContentTogglePaneButtonVisibility { get; set; }
public Windows.UI.Xaml.FrameworkElement Detail { get; set; }
public Windows.Foundation.Size DetailSize { get; }
public string DetailTitle { get; set; }
public Windows.UI.Xaml.Media.ImageSource DetailTitleIcon { get; set; }
public Xamarin.Forms.View DetailTitleView { get; set; }
public Windows.UI.Xaml.Visibility DetailTitleViewVisibility { get; set; }
public Windows.UI.Xaml.Visibility DetailTitleVisibility { get; set; }
public bool IsPaneOpen { get; set; }
public bool ShouldShowNavigationBar { get; set; }
public bool ShouldShowSplitMode { get; set; }
public bool ShouldShowToolbar { get; set; }
public Windows.UI.Xaml.Media.Brush ToolbarBackground { get; set; }
public bool ToolbarDynamicOverflowEnabled { get; set; }
public Windows.UI.Xaml.Media.Brush ToolbarForeground { get; set; }
public Xamarin.Forms.PlatformConfiguration.WindowsSpecific.ToolbarPlacement ToolbarPlacement { get; set; }

Removed method:

protected override void OnApplyTemplate ();

Type Changed: Xamarin.Forms.Platform.UWP.MasterDetailPageRenderer

Removed properties:

public MasterDetailControl Control { get; }
public Xamarin.Forms.MasterDetailPage Element { get; }
protected Xamarin.Forms.Platform.UWP.VisualElementTracker<Xamarin.Forms.Page,Windows.UI.Xaml.FrameworkElement> Tracker { get; set; }

Removed event:

public event System.EventHandler<VisualElementChangedEventArgs> ElementChanged;

Removed methods:

public virtual void BindForegroundColor (Windows.UI.Xaml.Controls.AppBar appBar);
public virtual void BindForegroundColor (Windows.UI.Xaml.Controls.AppBarButton button);
public virtual void Dispose ();
public virtual Xamarin.Forms.SizeRequest GetDesiredSize (double widthConstraint, double heightConstraint);
protected virtual void OnElementChanged (Xamarin.Forms.Platform.UWP.ElementChangedEventArgs<Xamarin.Forms.MasterDetailPage> e);
protected virtual void OnElementPropertyChanged (object sender, System.ComponentModel.PropertyChangedEventArgs e);
public virtual void SetElement (Xamarin.Forms.VisualElement element);

Removed Type Xamarin.Forms.Platform.UWP.MediaElementRenderer

Assembly Version Changed: 2.0.0.0 vs 0.0.0.0

Assembly Version Changed: 2.0.0.0 vs 0.0.0.0

Deprecations

API Changes

See all API Changes here.

Blogs

Xamarin Blogs

Thank you

Thank you to our community for helping to make Xamarin.Forms even better! Do you want to contribute in some way, too? Join us on Discord!

Contributors

This release, we received amazing contributions from these individuals. Give them a big round of applause!

Author Commit PR
1iveowl (@1iveowl) [iOS] Fix touch conflict between Shell Flyout and SwipeView (on Device) (#9144) #9144
Adam (@adamped) [iOS] ActivityIndicator starting animation only when attached to superview (#11339) #11339
Andrei (@AndreiMisiukevich) Easing type converter (#11601) #11601
Andrei (@AndreiMisiukevich) EasingDesignTypeConverter (#11697) #11697
Andrei (@AndreiMisiukevich) fixes #9720 (#9732) #9732
Byron Maroney (@breezy64) Fixing NRE in ContextActionCell (#11944) fixes #11943 #11944
Durgesh Khandal (@techduggu) [Enhancement] ListView ScrollTo with empty groups - Android (#8310)f ixes #8279 #8310
Kangho Hur (@rookiejava) [Tizen] Adds the Unified Theme Manager (#11779) #11779
Kangho Hur (@rookiejava) [Tizen] Enhances the EntryRenderer (#11978) #11978
Kangho Hur (@rookiejava) [Tizen] Fixed Tizen 4.0 regression issue (#12132) #12132
Kangho Hur (@rookiejava) [Tizen] Fixed getting the device type (#12133) #12133
Pedro Jesus (@pictos) [GH-10729] Added Current Page in Shell (#10979) #10979
Pedro Jesus (@pictos) GH-8881 - Remove the line at the flyout's end (#9429) #9429
Peter Foot (@peterfoot) [WPF] Open DatePicker when control receives focus (to match other platforms) (#11087) #11087
Seungkeun Lee (@myroot) Update profile unified font size scaling (#11979) #11979
Seungkeun Lee (@myroot) Fix SearchHandler.SetIsFocused (#11895) fixes #11894 #11895
Seungkeun Lee (@myroot) [Tizen] Adds the DisplayResolutionUnit (#12074) #12074
Seungkeun Lee (@myroot) Fix Assembly registration issue (#12130) #12130
Seungkeun Lee (@myroot) [Tizen] Enhances the shell renderer (#12119) #12119
tessarolli (@tessarolli) [WPF] Fix FormsPanel MeasureOverride negative requested size (#10653) #10653
Vladislav Antonyuk (@VladislavAntonyuk) #3659 #3660 WPF/GTK ListView ContextMenu, SelectionBehavior fix (#6417) #6417
Yann Zahringer Ferrando (@YZahringer) WeakEventManager made public (#12063) fixes #8405, #12063

Community Reviewers

As if that wasn't enough, these amazing community members and MVPs reviewed and tested these pull requests. We couldn't do it without you!

Reviewer PR
(@dersia) #9453
Felipe Baltazar (@felipebaltazar) #12039
Kangho Hur (@rookiejava) #11979
Kangho Hur (@rookiejava) #12074
Kangho Hur (@rookiejava) #12119
Kangho Hur (@rookiejava) #12130
Mohamed CHOUCHANE (@mohachouch) #6417
Nick Randolph (@nickrandolph) #8310
Pedro Jesus (@pictos) #12039
Rafael Rivera (@riverar) #8310
Rafael Rivera (@riverar) #11087
Rafael Rivera (@riverar) #9732
Vladislav Antonyuk (@VladislavAntonyuk) #10653

Feedback welcome

Your feedback is important to us. If there are any problems with this release, check the Xamarin.Forms Forums and GitHub for existing issues. Report new issues and suggestions on GitHub.

Open Source

Xamarin.Forms 5.0.0 is based on the open-source Xamarin.Forms repository: