Xamarin.Forms 3.0.0-pre3

Xamarin.Forms 3.0.0

Updated: 4/5/2018

Getting Started | What's New | Known Issues | Blogs | Feedback | Open Source

What's New in this Release

FlexLayout

FlexLayout introduces a new layout for Xamarin.Forms that is optimized for UI that prioritizes distribution and the ability to adapt to various screen sizes and dimensions. FlexLayout also promotes a flatter UI hierachy, a best practice for creating performant interfaces.

ResourceDictionary Improvements

ResourceDictionary has received additional improvements on the heels of the merged dictionary support we added in 2.5.0. A few examples, you can now load resource dictionaries from XAML files without a partial class, and you can use a less verbose syntax to represent merged dictionaries by omitting the wrapping <ResourceDictionary></ResourceDictionary> tags.

Right to Left Support

To make it easier to support right-to-left languages in Xamarin.Forms, we have introduced a new FlowDirection property on layouts and text controls. This works in harmony with the existing right-to-left support in the underlying Xamarin.Android and Xamarin.iOS applications.

StyleSheets

Xamarin.Forms now supports expressing your Styles using CSS. These are the exact same styling APIs you use today in XAML and C#, so it is a productivity compliment to those methods and not a replacement. CSS may be loaded into a StyleSheet from a separate CSS file, or defined in the Resources of your page.

Visual State Manager

Xamarin.Forms now supports using VisualStateManager to handle the different states of your controls. These may be declared in XAML or CS.


  • "[Android] Allow customizing Android MenuItem" (#1873)
  • "[Android] AppCompat NavigationBar should handle Transluscent Flags" (#1287)
  • "[Core] FlexLayout, with managed engine" (#1759)
  • "[WPF] Xamarin Forms WPF Backend - Platform Project" (#1334)
  • "Add "Right to Left" (RTL) Support" (#1222) (#1264)
  • "Add Application.PageAppearing/Dissapearing events" (#1970)
  • "Add Tizen backend" (#1310)
  • "CI Performance Tracking" (#1329)
  • "CSS" (#1207)
  • "Forms Embedding" (#1124) (#1191)
  • "NET Standard in X.F" (#1306)
  • "Remove Windows Phone 8 and 8.1" (#1267)
  • "Visual State Manager" (#1405)
  • Github #1660 - "[Enhancement] IsSpellCheckEnabled on Entry/Editor" (#1836)
  • Github #1663 - "[Enhancement] Entry.MaxLength" (#1880)
  • Github #1665 - "[Enhancement] ListView full width separators on iOS" (#1854)
  • Github #1679 - "[Enhancement] Android PlatformSpecific for WebView mixed content" (#1784)
  • Github #1682 - "[Enhancement] UWP PlatformSpecific to display JavaScript alerts in WebView" (#1785)
  • Github #1686 - "[Enhancement] Add BindingMode.OneTime" (#1805)
  • Github #1690 - "[Enhancement] Add Color on ProgressBar" (#1861)
  • Github #1691 - "[Enhancement] Add SearchBar platform specific for IsSpellCheckEnabled " (#1824)
  • Github #1696 - "[Enhancement] Add Platform specific for ImeOptions " (#1829)
  • Github #1717 - "[Enhancement] Allow DetectReadingOrderFromContent on UWP" (#1826)
  • Github #1731 - "[Enhancement] Add API for programmatically checking if running in design mode" (#1976)
  • Github #1797 - "Open/Closed principle missing" (#2103)
  • Github #1798 - "Normal logging verbosity is way too verbose when processing XAML" (#1837)
  • Github #1810 - "Generated code does not contain the version of the tools used to generate it" (#1838)
  • Github #1848 - "Improve XAMLC Compilation performance" (#1875)
  • Github #1908 - "[Android] Use drawables from resources opposed to creating bitmaps in order to improve performance" (#1973)
  • Github #1978 - "[Enhancement] More error information from XAMLC when missing OnPlatform tag" (#1982)
  • Github #2007 - "[Enhancement] ReferenceExtension exception message" (#2089)
  • Github #2018 - "[Enhancement] Make Application constructor public" (#2020)
  • Github #2022 - "[CSS] Allow class as a shorthand for StyleClass" (#2023)
  • Github #2063 - "XAMLC: error message for missing namespace declaration" (#2076)
  • Github #2064 - "XAMLC: error message for missing Style.TargetType" (#2078)

Release History

  • Thursday, April 5, 2018 - Xamarin.Forms 3.0.0.354232-pre3 (3.0.0 Pre Release 3)
  • Monday, March 19, 2018 - Xamarin.Forms 3.0.0.296286-pre2 (3.0.0 Pre Release 2)

Thursday, April 5, 2018 - Xamarin.Forms 3.0.0.354232-pre3 (3.0.0 Pre Release 3)

Issues Fixed

  • "[Core] avoid exception on overriden indexer" (#2131)
  • Github #2130 - "Can not set attached property with same name as event name in XAML." (#2154)
  • Github #2171 - "parameters after a nested markupextension in a markupextension are ignored" (#2185)

Additional fixes included in this release

  • "[Xaml] Generic GetService" (#2153)

Monday, March 19, 2018 - Xamarin.Forms 3.0.0.296286-pre2 (3.0.0 Pre Release 2)

Enhancements

  • "[Android] Allow customizing Android MenuItem" (#1873)
  • "[Android] AppCompat NavigationBar should handle Transluscent Flags" (#1287)
  • "[Core] FlexLayout, with managed engine" (#1759)
  • "[WPF] Xamarin Forms WPF Backend - Platform Project" (#1334)
  • "Add "Right to Left" (RTL) Support" (#1222) (#1264)
  • "Add Application.PageAppearing/Dissapearing events" (#1970)
  • "Add Tizen backend" (#1310)
  • "CI Performance Tracking" (#1329)
  • "CSS" (#1207)
  • "Forms Embedding" (#1124) (#1191)
  • "NET Standard in X.F" (#1306)
  • "Remove Windows Phone 8 and 8.1" (#1267)
  • "Visual State Manager" (#1405)
  • Github #1660 - "[Enhancement] IsSpellCheckEnabled on Entry/Editor" (#1836)
  • Github #1663 - "[Enhancement] Entry.MaxLength" (#1880)
  • Github #1665 - "[Enhancement] ListView full width separators on iOS" (#1854)
  • Github #1679 - "[Enhancement] Android PlatformSpecific for WebView mixed content" (#1784)
  • Github #1682 - "[Enhancement] UWP PlatformSpecific to display JavaScript alerts in WebView" (#1785)
  • Github #1686 - "[Enhancement] Add BindingMode.OneTime" (#1805)
  • Github #1690 - "[Enhancement] Add Color on ProgressBar" (#1861)
  • Github #1691 - "[Enhancement] Add SearchBar platform specific for IsSpellCheckEnabled " (#1824)
  • Github #1696 - "[Enhancement] Add Platform specific for ImeOptions " (#1829)
  • Github #1717 - "[Enhancement] Allow DetectReadingOrderFromContent on UWP" (#1826)
  • Github #1731 - "[Enhancement] Add API for programmatically checking if running in design mode" (#1976)
  • Github #1797 - "Open/Closed principle missing" (#2103)
  • Github #1798 - "Normal logging verbosity is way too verbose when processing XAML" (#1837)
  • Github #1810 - "Generated code does not contain the version of the tools used to generate it" (#1838)
  • Github #1848 - "Improve XAMLC Compilation performance" (#1875)
  • Github #1908 - "[Android] Use drawables from resources opposed to creating bitmaps in order to improve performance" (#1973)
  • Github #1978 - "[Enhancement] More error information from XAMLC when missing OnPlatform tag" (#1982)
  • Github #2007 - "[Enhancement] ReferenceExtension exception message" (#2089)
  • Github #2018 - "[Enhancement] Make Application constructor public" (#2020)
  • Github #2022 - "[CSS] Allow class as a shorthand for StyleClass" (#2023)
  • Github #2063 - "XAMLC: error message for missing namespace declaration" (#2076)
  • Github #2064 - "XAMLC: error message for missing Style.TargetType" (#2078)

Issues Fixed

Additional fixes included in this release

  • "[All] Expose the Flags to the Core" (#1181)
  • "[Android] Add API condition for initialize LayoutDirection" (#1388)
  • "[Android] Allow Previewer to set a per-page Context" (#1304)
  • "[Android] Change overload of CreateRenderer to internal for previewer compatibility" (#1237)
  • "[Android] Descriptive exception when ItemViewType >= ViewTypeCount" (#1383)
  • "[Android] Redo: Hide Fragments before removing them to allow custom animations" (#1680)
  • "[Android] Unspecified can be the default window soft input mode" (#1339)
  • "[Core] Adding deconstructors for common structs" (#1320)
  • "[Core] bind to ValueTuples" (#1317)
  • "[Core] expose margin properties to css" (#1381)
  • "[Core] fix an issue with netstandard when context type is object" (#1282)
  • "[Core] fix and speed up binding to BP" (#1645)
  • "[Core] Fixed invocation of the IButtonController methods when IsEnabled is false" (#1410)
  • "[Core] Hide SetSafeAreaInsets" (#1249)
  • "[Core] unify HorizontalTextAlignmentProperty" (#1269)
  • "[Core] unify Padding into IPaddingElement" (#1276)
  • "[Core]Set default value for IsPresented on MacOS" (#1223)
  • "[flex] better margin support with Wrap" (#1997)
  • "[GTK] Added Maps project" (#1349)
  • "[GTK] Changes in GTK nuspecs" (#1629)
  • "[iOS] Check for SelectedIndex value in OnEnded" (#1278)
  • "[iOS] Delay for ScrollTo to work on iOS11" (#1211)
  • "[iOS] Extract native control creation like in android ButtonRenderer" (#1080)
  • "[iOS] Fix object disposed exception in ImageCell" (#1808)
  • "[iOS] PickerRenderer EditingChanged detach" (#1364)
  • "[iOS] Redirect PreferredStatusBarStyle to the Child View Controller" (#1175)
  • "[MacOS] Fix Menus" (#1225)
  • "[MacOS] make OnElementChanged and OnElementPropertyChanged protected virtual" (#1187)
  • "[Tests] make sure the test pass even if the locale is wrong" (#1292)
  • "[Tizen] Add support for hint flags for tizen backend" (#1484)
  • "[Tizen] Slightly enhance tizen backend" (#1800)
  • "[Tizen] Support CascadeInputTransparent to Tizen" (#1916)
  • "[Tizen] Support Page embedding to Tizen backend" (#1506)
  • "[UWP] Set ListView SelectedItem when constructing page" (#1357)
  • "[WPF, GTK, TIZEN] Replace obsolete property OutlineColor by BorderColor" (#1443)
  • "[WPF] Add Deserializer implementation" (#1411)
  • "[WPF] Added a simplistic TimePicker." (#1500)
  • "[WPF] Maps project for WPF backend" (#1335)
  • "[WPF] Moved WPFLightToolkit Resources to WPF Platform project" (#1560)
  • "[WPF] Platform and Maps nuget package" (#1445)
  • "[Xaml/XamlC] ResourceDictionary.Source" (#1229)
  • "[Xaml/XamlC] route loading of RD through ResourceLoader" (#1271)
  • "[Xaml] create the [XamlResourceId] at assembly level" (#1232)
  • "[Xaml] do not report unhandled node on XmlDeclaration" (#1272)
  • "[Xaml] fix loading RD without codebehind" (#1257)
  • "[Xaml] still load Xaml from old assemblies..." (#1224)
  • "[Xaml] use [Before|After]Targets to avoid being overridden" (#1277)
  • "[XamlC] Compile RDs without codebehind" (#1241)
  • "[XamlC] Move XF.Build.Tasks to nestandard2.0" (#1370)
  • "[XamlC] no longer use any reflection-base ImportReference" (#1899)
  • "[XamlC] treat netstandard types as mscorlib" (#1281)
  • "[XamlC] update cecil to 0.10-b7" (#1301)
  • "[XamlC] XamlResourceIdAttribute" (#1167)
  • "[XamlG] do not mess with path separators" (#1250)
  • "[XamlG] only use forward slashes in XamlResource paths" (#1251)
  • "[XamlG] use random file names while used by UpdateDesignTimeXaml" (#1259)
  • "Add implicit color conversion to .NET Standard's System.Drawing.Color" (#1359)
  • "Add more UWP automated testing capabilities" (#1252)
  • "Add netstandard1.0 support" (#1649)
  • "Allow RecycleElement with null Template" (#1239)
  • "Allow specifying AutomationProperties.LabeledBy by name" (#914)
  • "Auto merged ResourceDictionaries" (#1297)
  • "Fix UWP button image rendering crash" (#1576)
  • "Lazy creation of ResourceDictionaries" (#1295)
  • "Make it possible to customise the window on iOS" (#1247)
  • "Use GetMethod instead of GetRuntimeMethod in TypeConversionExtensions" (#1715)

Breaking Changes

  • [Android] For API >=17, we now set the TextAlignment instead of the Gravity of the EditText when we change the HorizontalTextAlignment property. (#1222)
  • UWP requires Fall Creator's Update (#1306)
  • Removed Windows Phone 8 and 8.1 (#1267)
  • When IsSpellCheckEnabled is set to false (default is true) and no CustomKeyboard is in use the native spell checker feature will be disabled. This means that CustomKeyboard always has precedence. If a Keyboard has been set which disables spell checking, e.g. Keyboard.Chat, the IsSpellCheckEnabled property is ignored. The property cannot be used to enable spell checking for a Keyboard which explicitly disables it. (#1836)
  • According to #1691 the default for spell check enabled is set to false. This change set the same default for AutoSuggestBox control template meaning that the native UWP TextBox used by AutoSuggestBox will get a default value of false. This is inline with Win8 defaults of TextBox, but on Win10 the default value for IsSpellCheckEnabled on TextBox is true, see https://docs.microsoft.com/en-us/uwp/api/windows.ui.xaml.controls.textbox#WindowsUIXamlControlsTextBox_IsSpellCheckEnabled. If apps rely on the default behavior on Win10 then this fix will disable the spell check by default changing that behavior. In order to get back spell checking on a SearchBox instance, user needs to call one of: SearchBar.On<Windows>().SetSpellCheckEnabled(true); SearchBar.On<Windows>().EnableSpellCheck(); (#1824)
  • xbuild doesn't see SAP projects the same way msbuild does. Projects using xbuild are therefore no longer supported. (#940) (#1202)
  • UWP ActionSheet can be dismissed without selecting an option; however, this brings the behavior inline with previous Windows versions. (#881)

Deprecations

  • Obsoleted Frame.OutlineColor { get; set; }
  • Obsoleted Frame.OutlineColorProperty;
  • Windows Phone 8 and 8.1 (#1267)

API Changes

  • "[Android] Allow customizing Android MenuItem" (#1873)
  • "[Core] FlexLayout, with managed engine" (#1759)
  • "[WPF] Xamarin Forms WPF Backend - Platform Project" (#1334)
  • "Add "Right to Left" (RTL) Support" (#1222) (#1264)
  • "Add Application.PageAppearing/Dissapearing events" (#1970)
  • "Add Tizen backend" (#1310)
  • "CI Performance Tracking" (#1329)
  • "CSS" (#1207)
  • "Remove Windows Phone 8 and 8.1" (#1267)
  • "Visual State Manager" (#1405)
  • Github #1660 - "[Enhancement] IsSpellCheckEnabled on Entry/Editor" (#1836)
  • Github #1663 - "[Enhancement] Entry.MaxLength" (#1880)
  • Github #1665 - "[Enhancement] ListView full width separators on iOS" (#1854)
  • Github #1679 - "[Enhancement] Android PlatformSpecific for WebView mixed content" (#1784)
  • Github #1682 - "[Enhancement] UWP PlatformSpecific to display JavaScript alerts in WebView" (#1785)
  • Github #1686 - "[Enhancement] Add BindingMode.OneTime" (#1805)
  • Github #1690 - "[Enhancement] Add Color on ProgressBar" (#1861)
  • Github #1691 - "[Enhancement] Add SearchBar platform specific for IsSpellCheckEnabled " (#1824)
  • Github #1696 - "[Enhancement] Add Platform specific for ImeOptions " (#1829)
  • Bugzilla 37621 - "SearchBar BackgroundColor behavior inconsistent on Windows platforms" (#1405)
  • Bugzilla 40092 - "AbsoluteLayout content does not fill all available space on some devices" (#1128) (#1761)
  • Bugzilla 40967 - "Layouts intercept all input on iOS." (#1621) (#1771)
  • Bugzilla 50098 - "Add the ability to change the font on Picker" (#662)
  • Bugzilla 55862 - "Bad Error With XAMLC And Incorrect TypeConverter" (#909)
  • Bugzilla 60766 - "AbsoluteLayout without background captures input on Android" (#935) (#1621) (#1771)
  • "[Android] Unspecified can be the default window soft input mode" (#1339)
  • "[Xaml/XamlC] ResourceDictionary.Source" (#1229)
  • "Add implicit color conversion to .NET Standard's System.Drawing.Color" (#1359)
  • "Allow specifying AutomationProperties.LabeledBy by name" (#914)
  • "Auto merged ResourceDictionaries" (#1297)

Feedback

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

Open Source

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

Xamarin Workbook

If it's not already installed, install the Xamarin Workbooks app first. The workbook file should download automatically, but if it doesn't, just click to start the workbook download manually.