doc/ReleaseNotes/LegacyReleaseNotes.md
Application.Current.ExitWindows.Storage.FileProperties.BasicProperties.DateModifiedUno is now built using VS2019 16.4, and does not support building applications with Visual Studio 2017. Linker errors may occur such as:
Java.Interop.Tools.Diagnostics.XamarinAndroidException: error XA2006: Could not resolve reference to 'System.Collections.Generic.Queue`1'
(defined in assembly 'Uno.UI, Version=255.255.255.255, Culture=neutral, PublicKeyToken=null') with scope 'mscorlib, Version=2.0.5.0,
Culture=neutral, PublicKeyToken=7cec85d7bea7798e'.
ElevatedView in the Uno.Toolkit to provide elevation & rounded corners on all platforms
(not supported on Windows yet, because Uno needs to target framework 10.0.19041.0)FontIcon on macOSPhoneCallManager.ShowPhoneCallUI on macOSShowComposeSmsMessageAsync on macOSFlyout on macOSHingeAngleSensor for Surface DuoGeolocator on macOSClipboard get/set Text content on macOSApplicationView.Title on Android and macOSAnalyticsInfo on macOSTryEnterFullScreenMode and ExitFullScreenMode on WebAssemblyMessageDialog on macOSKnownFolders.MusicLibrary and VideosLibraryStorageFile.DateCreatedApplicationView.IsScreenCaptureEnabled on AndroidStorageFile.DeleteAsync()PointerDown, PointerUp PointerEntered, PointerExited and PointerMoved events on macOSLauncher API on macOS, support for special URIsEmailManager.ShowComposeNewEmailAsyncStorageFolder.CreateFileAsync(string path)string value in a StaticResource when using `CreateFromStringAttribute'FeatureConfiguration.ScrollViewer.AndroidScrollbarFadeDelayGrid.ColumnSpacing and Grid.RowSpacingPopup.LightDismissOverlayMode, as well as DatePicker.LightDismissOverlayMode and Flyout.LightDismissOverlayMode. To modify the background color of the Overlay see Popup.md, DatePicker.md, TimePicker.md and Flyout.mdTransformToVisual now returns a real transform to convert coordinates between views (was only returning a translate transform to offset the origin of controls)NumberBoxUIElement.RightTapped event (The context menu won't appear anymore on WASM, except for the TextBox)UIElement.Holding eventScrollViewerLinearGradientBrushApplicationView.GetSpanningRectsUno.Foundation.Extensibility.ApiExtensibility and ApiExtensionAttributeUno.UI.DualScreen packagex:Bind functions and BindBackPopup by default. Can be enabled through FeatureConfiguration.Popup.UseNativePopup set to false (See #2533 for more details)IconElement.AddIconElementView is now internal so it is not accessible from outside.Thumb.DragStarted.<Horizontal|Vertical>Offset are now fulfilled (was always 0)Thumb.Drag<Delta|Completed>.<Horizontal|Vertical> are now relative to the last event (was cummulative / relative to the started)ListViwItem is now the NativeListViewBase (was the ListView it self) as described here https://github.com/unoplatform/uno/blob/master/doc/articles/controls/ListViewBase.md#difference-in-the-visual-tree<RenderTransform> on an image was producing an incorrect layout result.CornerRadius for Button style to apply properlyCornerRadius in default ComboBox styleDesignMode.DesignMode2Enabled no longer throws (is always false on non-UWP platforms)ApplicationData on macOS, added support for LocalSettingsxamarinmacos20 to crosstargeting_override sampleDisplayInformation leaks memoryIsEnabled from false to true on Control inside another Control didn't workListView containing a horizontal ScrollViewer: horizontal scrolling is difficult, only works when the gesture is perfectly horizontalMarginViewBox no longer alters its child's RenderTransformLostFocus Value to UpdateSourceTrigger EnumMethodName value for `CreateFromStringAttribute' if it's not fully qualified it the codeNavigationView.ItemSource scenario (https://github.com/unoplatform/uno/issues/2477)TransformGroup not workingSelector support for IsSelected (#1606)LayerTextBlock.TextDecorations is not updating properlyXamlBindingHelper for GridLength and TimeSpanListView resourcesThumb.DragStarted.<Horizontal|Vertical>Offset are now fulfilled (was always 0)Thumb.Drag<Delta|Completed>.<Horizontal|Vertical> are now relative to the last event (was cummulative / relative to the started)[#2040] Support for ms-settings:// special URIs on Android and iOS, Launcher API alignments to match UWP behavior
#2029 Support for MenuFlyoutItem.Click
support /[file]/[name] format in ResourceLoader.GetForCurrentView().GetString()
[#2039] Added support for Xaml type conversions using CreateFromStringAttribute.
[#] Support for Windows.Devices.Lights.Lamp on iOS, Android.
#1970 Added support for AnalyticsInfo properties on iOS, Android and WASM
[#1207] Implemented some PackageId properties
#1919 Support for PathGeometry on WASM.
Support for Geolocator on WASM, improvements for support on Android, iOS
#1813 - Added polyline support for WASM and samples for all shapes
#1743 - Added a change to make the MarkupExtensionReturnType optional
Added Dark and HighContrast theme resources, reacts to Dark/Light theme on iOS, Android and WASM automatically during the startup of the app if RequestedTheme is not set in App.xaml
Support for Gyrometer on Android, iOS and WASM
ReadingChangedReportIntervalSupport for Launcher.QueryUriSupportAsync method on Android and iOS
#1493 - Implemented the Windows.Input.PointerUpdateKind Enum.
#1428 - Add support for horizontal progress bars to BindableProgressBar on Android.
Add support for Windows.Devices.Sensors.Magnetometer APIs on iOS, Android and WASM
ReadingChangedReportIntervalAdd support for Windows.UI.StartScreen.JumpList APIs on Android and iOS
Logo, DisplayName and ArgumentsOnLaunched method same as on UWPRefactored DrawableHelper to the Uno project
Add full implementation of Windows.UI.Xaml.Input.InputScopeNameValue on all platforms.
Add support for Windows.Devices.Sensors.Accelerometer APIs on iOS, Android and WASM
ReadingChangedShakenReportIntervalAlign ApplicationData.Current.LocalSettings.Add behavior with UWP for null and repeated adds
Add support for Windows.ApplicationModel.Calls.PhoneCallManager
Add support for Windows.Phone.Devices.Notification.VibrationDevice API on iOS, Android and WASM
Basic support for Windows.Devices.Sensors.Barometer
Support setting Style inline (e.g. <TextBlock><TextBlock.Style><Style TargetType="TextBlock"><Setter>...)
[Wasm] Add support for DisplayInformation properties LogicalDpi, ResolutionScale, ScreenWidthInRawPixels, RawPixelsPerViewPixel , and ScreenHeightInRawPixels¸
Permit DependencyProperty to be set reentrantly. E.g. this permits TextBox.TextChanged to modify the Text property (previously this could only be achieved using Dispatcher.RunAsync()).
Add support for filtered solutions development for Uno.UI contributions.
132984 [Android] Notch support on Android
Add support for Android UI Tests in PRs for improved regression testing
Add static support for ThemeResources: Application.Current.RequestedTheme is supported
Dark and Light are supported.
Custom Themes are supported. This let you specify HighContrast or any other custom themes.
(this is a feature not supported in UWP)
// Put that somewhere during app initialization...
Uno.UI.ApplicationHelper.RequestedCustomTheme = "MyCustomTheme";
FrameworkElement.RequestedTheme is ignored for now.
Should be set when the application is starting (before first request to a static resource).
Prevent possible crash with MediaPlayerElement (tentative)
Add support for ContentDialog, including Closing and Closed events
Permit DependencyProperty to be set reentrantly. E.g. this permits TextBox.TextChanging to modify the Text property (previously this could only be achieved using Dispatcher.RunAsync()).
Implement TextBox.TextChanging and TextBox.BeforeTextChanging. As on UWP, this allows the text to be intercepted and modified before the UI is updated. Previously on Android using the TextChanged event would lead to laggy response and dropped characters when typing rapidly; this is no longer the case with TextChanging.
[WASM] ComboBox's dropdown list (CarouselPanel) is now virtualized (#1012)
Improve Screenshot comparer tool, CI test results now contain Screenshots compare data
Updated Xamarin.GooglePlayServices.* packages to 60.1142.1 for Target MonoAndroid80
Updated Xamarin.GooglePlayServices.* packages to 71.1600.0 for Target MonoAndroid90
<ContentPresenter> will now - as a fallback when not set - automatically bind to
TemplatedParent's Content when this one is a ContentControl.
You can deactivate this behavior like this:
FeatureConfiguration.ContentPresenter.UseImplicitContentFromTemplatedParent = false;
Add support for Selector.IsSynchronizedWithCurrentItem
Add support for CoreApplication.MainView and CoreApplication.Views
Add support for resolution of merged and theme resources from ResourceDictionary in code
Add non-failing StatusBar BackgroundOpacity and BackgroundColor getters
Relax DependencyProperty owner validation for non-FrameworkElement
ToolTip & ToolTipService are now implemented.
#1352 Add support for ThemeResources with different types (e.g.: mixing SolidColorBrush and LinearGradientBrush)
Add support for BitmapSource.PixelWidth and Height
Preliminary support for ColumnDefinition.ActualWidth and RowDefinition.ActualHeight.
Updated VisualTree of an app with Visibility for each items.
Add support for CompositionTarget.Rendering event.
Add support for IObservableVector<T> in ItemsControl
[#1559] [#1167] Wasm: make the IsEnabled property inheritable.
Full support of pointer events cf. routed events documentation
Add support of manipulation events cf. routed events documentation
Update CheckBox style to 10.0.17763
Adds the support for AutomationProperties.AutomationId
#1328 Basic ProgressRing implementation for WASM
Add support for Windows.UI.Xaml.Controls.Primitives.LayoutInformation.GetAvailableSize
Add support for Runtime Tests that require UI integration
Enable iOS UI Tests
Add support for PersonPicture
Add support for VisualState Setter data binding, static resources and complex objects
Clipping to bounds of control is now more similar to UWP
The feature flag FeatureConfiguration.UseLegacyClipping is now deprecated and not used anymore
XAML Hot Reload support for iOS, Android and Windows
Add support for GitPod Workspace and pre-builds
#880 Added added implicit conversion for double to Thickness
Add Android support for CoreApplication.GetCurrentView().TitleBar.ExtendViewIntoTitleBar to programmatically draw under the status bar
[WASM] ScrollViewer.ChangeView is now supported
[Wasm] Add the ability to focus a TextBox by clicking its header
Add support for ToggleButton.IsThreeState and ToggleButton.Indeterminate
[Wasm] Add support for TextBox.IsReadonly
[iOS] [WASM] Path now supports LinearGradientBrush as Fill
A feature flag has been added to change the default preferred placement mode fo the drop down of the ComboBox (cf. ../articles/control/ComboBox.md)
TextBox no longer raises TextChanged when its template is applied, in line with UWP.TextBox.TextChanged is now called asynchronously after the UI is updated, in line with UWP. For most uses TextChanging should be preferred.TextBox.IsSpellCheckEnabled = false is now enforced in a way that may cause issues in certain use cases (see https://stackoverflow.com/a/5188119/1902058). The old behavior can be restored by setting ShouldForceDisableSpellCheck = false, per TextBox.TextBox.Text = null will now throw an exception, as on UWP. Pushing null via a binding is still valid.ManipulationMode to something else than System or All, the DelaysContentTouches is going to be disabled on all parent ScrollViewerThis change might break the compilation for projects that define duplicate resources in other globally accessible resource dictionaries. Adjustments to remove duplicate resources may be necessary.
UIElement.TransformToVisual is now including scale, rotation or any custom transformation that was declared on a parent element (transform was only including translate components)ContentControl no longer display the datacontext type when ContentTemplate and content are emptyApplicationData.Current.[LocalFolder|RoamingFolder] can now be used in the ctor of App.xaml.cs
This change introduces a new constructor in
Windows.UI.Xaml.NativeApplicationthat requests a delegate. In the Visual Studio Templates for Uno Platform, theMain.csfor the Android, the constructor now provides() => new App()instead ofnew App(), you can do the same in your existing application. See this file for an example.
this keyword generated for Storyboard.SetTargetApplicationDataContainer allowed clearing value by calling Add(null) which was not consistent with UWP.ComboBox drop down is now placed following a logic which is closer to UWP and it no longer flickers when it appears (especilly on WASM) cf. ../articles/control/ComboBox.mdBasedOn on a <Style> in App.Xaml were not resolving properlyx:Name in App.Xaml's resources were crashing the compilation.x:Name on non-DependencyObject resources were crashing the compilationDisplayInformation.LogicalDpi to match UWP's behaviorAcceptsReturn=True crashes ListViewDataContext of an element to a new value were pushing the properties default
value on data bound properties before setting the new value..Click on a ButtonBase were not raising events properlyIsEnabled correctly to TextBox (inner TextBoxView is now correctly disabled)Pivot templates.ComboBox's ControlTemplate was requiring a binding to TemplatedParent for the x:Name="ContentPresenter" control. Now aligned with UWP by making this binding in the control itself.ThemeResource bugfixes:
StaticResource not working inside ResourceDictionary.ThemeDictionariesThemeResource on the wrong property type shouldn't raise compile-time error (to align with UWP)ComboBox: Fix DataContext was propagated to <ContentPresenter> when there was no selected item, causing strange display behavior.ComboBox : the combobox wasn't fully expanding vertically on first opening.Popup & ComboBox (and other controls using Popup) were not behaving properly when IsLightDismissable were set to true.AppBar and CommandBar styles.BitmapIcon contentBitmapIcon monochrome ForegroundListView when using an ObservableCollection as its source and using Header and Footer.ListView.HeaderTemplate (and .FooterTemplate) binding bug when changing Header and Footer.Image.Source propertyWindows.System.Display.DisplayRequest API on iOS and AndroidWindows.System.Power.PowerManager APIs on iOS and Android:
CheckBox glyph to match UWP style on all platformsDisplayInformation properties on iOS and Android:CurrentInputMethodLanguageTag and TrySetInputMethodLanguageTag on Android, iOS and WASMChatMessageManager.ShowComposeSmsMessageAsync (and ChatMessage Body and Recipients properties) on iOS and AndroidDisplayInformation properties on iOS and Android:
Span<T> for Grid layoutTSInteropMarshaller.InvokeJSXamlReader support for top level ResourceDictionary (#640)RelativeSource.Self bindingsTimePicker and DatePicker on iOS.SystemNavigationManager.BackRequestedPasswordVault on supported platformx:Loadx:Load and x:DeferLoadStrategyx:Load or x:DeferLoadStrategyWindows.Globalization.CalendarVisualStateManager now follows correct precedence as documented by MicrosoftFlyoutBase.AttachedFlyout and FlyoutBase.ShowAttachedFlyout()x:Bind now supports binding to fieldsGrid positions (Row, RowSpan, Column & ColumnSpan) are now behaving like UWP when the result overflows grid rows/columns definitionAppBarButton.Label taking precedence over AppBarButton.Content when used as PrimaryCommands.PopupPanel hides itself if collapsed (special cases as it's at the top of the Window)INotifyCollectionChanged in the Pickernull item added at the top of the PickerGrid now supports ColumnDefinition.MinWidth and MaxWidth and RowDefinition.MinHeight and MaxHeight (#1032)PivotPanel measure/arrange to allow text wrapping in pivot itemsPathIcon supportUno.UI.Helpers.Automation.GetDependencyPropertyValueUno.UI.Helpers.Automation.GetDependencyPropertyValue\WebAssemblyRuntime.InvokeJSUnmarshalled method with three parameters has been removed.NavigationBarHelper has been removed.<Button><Border>...) will be overridden by localized values if available.SecondaryCommands, the AppBarButton.Label property will no longer be used for the title of menu item, instead use the AppBarButton.Content property. For SecondaryCommands, keep using AppBarButton.Label.WordEllipsis was removed from the TextWrapping as it's not a valid value for UWP (And it was actually supported only on WASM) (The right way to get ellipsis is with the TextTrimming.WordEllipsis)Popup.Anchor is no longer availableHAS_UNO define is now not defined in uap10.0.x target frameworks.XamlReader fails when a property has no getterClick and Tapped events were not working property for ButtonBase on Android and iOS.TextBox.IsReadOnly from true to false no longer breaks the cursorWasmHttpHandler was broken because of a change in the internal Mono implementation.routedevent's un-registration not working.StaticResource.ResourceKeynot_wasm prefix properly. (#784)x:Name entries on Style in resourcesTextBlock measure with constrains.SelectedValue on a Selector now update the selection and the indexmaxlines propertyCompleted callback were not properly called when there's not children.ComboBox drop down is now placed following a logic which is closer to UWP and it longer flickers when it appears (especilly on WASM)LinearGradientBrush.EndPoint now defaults to (1,1) to match UWPClick on ButtonBase was not properly raised.ICollectionView.CopyToViewBoxAutoSuggestBox.ItemsSourceSelector.SelectedValuePath (e.g. useful for ComboBox)MediaPlaybackListSystemChromeMediumHighColor to use the Light themeFrameworkElement.GoToStateCoreListView measure/arrange for dynamic contentFrameworkElement.IsLoaded property is now publicApplication.OnWindowCreatedAutomationPropertyPointerRelease events are now marked as handled by the TextBoxKeyDown events that are changing the cursor position (left/right/top/bottom/home/end) are now marked as handled by the TextBoxRoutedEventArgs.IsGenerated returns false as generating events with Uno is not yet supportedAutomationPeer.ListenerExists returns false as we cannot generating events with Uno is not yet supportedKeyUp event properly sends KeyEventArgs to the controlsCollectionViewSource.ItemsPath propertyBindingExpression.UpdateSource()MediaTransportControls buttons now use Tapped event instead of ClickUIElement.IsPointerPressed and IsPointerOver internalObservableVector<T> is now internal againTimePicker.Time and TimePicker.MinuteIncrement are now back for netstandard2.0MediaPlaybackItem.Source is back as a readonly propertyMediaPlaybackList.Items is back to an IObservableVectorXamlReaderSystem.UriConverter is being linked outListView recycling when the XamlParent is not available for AutoSuggestBoxUno.UI.Toolkit base UWP sdk to 19041ImageAsset nodes must not be <Visible>false</Visible> to be copied to the generated project.Path.Data (#698)Pivot when using native styleFeatureConfiguration.NativeListViewBase.RemoveItemAnimator to remove the ItemAnimator that crashes when under stressComboBox not working when using Popover.Path.Data property now invalidates measure and arrangeImage logs Opened and Failed eventsBindableSwitchCompat : - Text property was added in order to change the ToggleSwitch label.
- TextColor property was added in order to change the ToggleSwitch label color.
- ThumbTint property was added in order to change the Thumb color.
- TrackTint property was added in order to change the Track color.upri files for faster resolutionFeatureConfiguration.Interop.ForceJavascriptInterop to enable JS Eval fallback in Wasm mode.resw folders with upri resource generationThicknessHelperupri load now ignores resources not used by the current cultureFeatureConfiguration.FrameworkElement.AndroidUseManagedLoadedUnloaded to control the native or managed propagation performance of Loaded/Unloaded events through the visual treeMicrosoft.NETCore.UniversalWindowsPlatform version in the UWP head template to avoid assembly loading issues when using the Uno library template in the sample solution.Path.Stretch has been moved to Shape and works well now for all shapes.DynamicObject data binding, to enable support for Elmish.Uno.CoreDispatcher StackOverflowException when running on low stack space environments (e.g. iOS)ResourceLoader.GetForViewIndependentUse(string) and named resource filesFeatureConfiguration.FrameworkElement.WasmUseManagedLoadedUnloaded = false.x:FieldModifierBindableSwitchCompat in order to avoid confusion with the Switch control.FeatureConfiguration.DataTemplateSelector.UseLegacyTemplateSelectorOverload = true.ResourcesGeneration msbuild target has been renamed to UnoResourcesGeneration
If your csproj is using this target explicitly, change it to the new name.Frame does not unset Page.Frame when a page is removed{} in their value (#455)VisibleBoundsPadding memory leakCommandBarx:Name in XAML documentsAutomationProperties.NameListViewBase.SelectedItems is updated on selection change in Single selection modeListView group headers messed up on item updateSelector.SelectionChanged is raised twice on updated selectionFrameworkElement.WillMoveToSuperview log to Application.Current.UnhandledExceptionNavigationView controlSymbolIcon control for WebAssemblyUIElement.Clip for WebAssemblyBitmapIcon supportBitmapIcon.ShowAsMonochrome supportWindows.Foundation.UniversalApiContract in IsApiContractPresentDelegateCommand<T>.xaml.cs if the debugging symbol type is Full in projects created from templatesWebView No longer raises NavigationFailed and NavigationCompleted events when navigation is cancelled on iOS.VisualState does not have a valid NameDatePickerSelector not propagating coerced initial valueWebView doesn't work.ListView scrolls up when tapping an item at the bottom of screenCommandBar not rendering until reloadedglobal:: qualifier in the BindableMetadataGeneratorObservableVectorWrapperMinuteIncrement is not setThis release is the first non-experimental release of the Uno Platform since the initial public version in May 2018. Lot of bug fixes and features have been added since then, and lots more are coming.
A lot of those changes where included to support these libraries : MVVMLight, ReactiveUI, Prism, Rx.NET, Windows Community Toolkit, Xamarin.Forms UWP.
Here are some highlights of this release:
ListView controlPivot controlDataTemplateXamlReaderThreadPoolTimerbool to Visibility conversionAutoSuggestBoxx:Name reference in x:Bind markupWriteableBitmap for all platformsCross-platform Library template in vsixStaticResource as top level ResourceDictionary elementAutomationPeerWindow.BoundsUnderline in HyperLinkButtonFrameworkElement on iOS, instead of UILabelType conversion in XAML generator and binding engineItemsControl.OnItemsChanged supportHere's the full change log:
SimpleOrientationSensor default queue managementListView, ScrollViewerCacheLength for Android ListViewBaseDependencyObject properties inheritance race conditionIconElement fast conversionToggleSwitchTemplateSettings, PackageId, UISettingsXamlObjectBuilder loggingKeyTime and DurationStaticResource resource dictionary elementsXamlCodeGenerationFiles (fixes #144)ResourcesDirectory (fixes #106)ResourceHelper.ResourcesService (fixes #142)ResourceLoader.GetString is now supported (fixes #142)VisualState not updated when TextBox is focusedListView and Selector memory footprintBinderReferenceHolderWindow.BoundsGrid items size when MinHeight and MinHeight are usedHyperLinkButtonScrollContentPresenter margin issueMessageDialog behavior for androidContentControl Data Context is now properly unsetEmailNameOrAddress InputScope for TextBoxresw entry supportComboBox popup touch issueType conversion in Xaml generator and Binding engine. #159ItemsControl.OnItemsChanged support #175