Uno Platform - 用于iOS,Android和WebAssembly的UWP桥接器
Uno Platform - 用于iOS,Android和WebAssembly的UWP桥接器This exciting new release is all about enabling development on macOS and making apps for macOS!
We've been working on this for a while now, and with the help of contributors (thanks @MartinZikmund!), we're now announcing the preview of Uno's macOS support.
To validate that our macOS support is taking shape, we ported over the Uno Calculator over, and it's now available on the mac App Store.
There are lots to do to get to the full potential of macOS through Uno's abstractions, yet it will allow you to start developing for macOS.
To create a new application with Uno in Visual Studio for mac:
-
Open a terminal
-
Type the following to install the Uno templates:
dotnet new -i Uno.ProjectTemplates.Dotnet::2.4
-
Type the following to create a new project:
dotnet new unoapp -n MyUnoApp
-
Open the project in Visual Studio
To build for each platform:
-
For macOS:
- Right click on the macOS project, then Set as startup
- If “My Mac” is not selected in the top bar, make sure to select “Debug | iPhone Simulator” in the selector
-
For iOS:
- Right click on the iOS project, then Set as startup
- In the configuration selector, instead of Debug, select Debug | iPhoneSimulator
-
For Android:
- Right click on the Android project, then Set as startup
- If your android device or simulator does not appear in the list, use the Debug configuration.
MacOS Implementation Details
The implementation of the macOS support is Uno is heavily based on the iOS support. The reason for this is UIKit for iOS being very close to AppKit on macOS. This allowed us to reuse large portions of the code from iOS and adjust to fit macOS’s behavior.
Yet, there are some very subtle differences in the implementation though, where methods such as UIKit.SizeThatFits() or UIKit.SetNeedsLayout() are either absent or behaving very differently. That may be why you’ll notice parts that need so fit and finish and we encourage you to open issues on our GitHub repo.
You may ask why we did not choose to go the Catalyst route, and you’d be right. The main reason is the lack of support for Catalyst from Xamarin, and if you want to chime in this issue if this is of interest to you.
At this time, and contrary to what’s available for iOS, debugging and deploying a macOS app must be done through Visual Studio for mac, while only building is possible in Visual Studio 2019 for Windows. This feature is missing from the Xamarin tooling, and if you want that support to be added, you can vote on this issue on the Visual Studio Community site.
Features
Bug Fixes
- dotnet_new: Adjust default active projects in VS for mac (ec2de29)
- dotnet_new: Fix project guids duplicates causing issues in VS4mac (1ef6b78)
- macos: Missing mac platform for Uno.UI.RemoteControl (1d57cc2)
- xbind: Possible invalid type cast in two-way mode (b952235)
- xbind: Fix static member access in DataTemplate (d3c70c3)
Assets
10
This release focuses on adding the support for Android10 and AndroidX, WinUI's RadialGradientBrush and ProgressRing, Prism Library, and a number of bug fixes that you can see in the change log below.
Using the API level 29 allowed us to review our TextBlock
implementation for Android and replace some reflection code required to access hidden APIs for MaxLines by official APIs that are now available. While being safer going forward, this approach also provides performance gains for this crucial control.
As the Google Play store won’t accept applications built for Android 8 (SDK 27) since November 2019, we’re removing support for that SDK to simplify our codebase and devops pipelines. To use Uno 2.3 or higher, your application needs to target Android SDK 28 (android 9) or 29 (Android 10).
If your application makes explicit use of support libraries, you’ll need to update those to Android X, and there’s some good documentation for it. Shout out to the Xamarin team, their migration tooling worked really well.
Among other notable changes:
- The support for
Windows.Data.Xml.Dom
has been added (by @MartinZikmund, an essential part of the API that many other WinRT and WinUI API use) - The support for the Prism library in the form of a
dotnet new unoapp-prism
template.
The Uno.Wasm.Bootstrapper 1.2 has been released and removes the unfriendly use of “DotNetCliToolReference” that could not be updated via the Visual Studio interface. It includes all the recent improvements such as Windows AOT, Visual Studio 16.6 debugging, .NET interpreter performance improvements, macOS and Linux support, and Visual Studio Code support.
To upgrade from previous versions of the bootstrapper:
- If you had a <DotNetCliToolReference … /> line in your csproj file, remove it
- Add a nuget reference to the Uno.Wasm.Bootstrap.DevServer using the Nuget Package manager
Features
- Add support for Android10 and AndroidX 7b05b51
- focus: Add support for FindFirstFocusableElement 66c514b
- focus: Add support for FindLastFocusableElement 2049304
- gradient: [Wasm] Added support for gradient text 92aa150
- gradient: Added FallbackColorWithOpacity. d834088
- gradient: Added Radial Gradient for Android 171f9e4
- gradient: first working implementation of RadialGradient on WASM fe5d86c
- gradient: RadialGradientBrush for iOS be6d8af
- lottie: [Android] Added Progress, IsPlaying & Duration 179c2cc
- lottie: Allow loading of Lottie files from embedded resources. a211406
- progressring: First implementation of WinUI 2.4 ProgressRing. 00df9d8
- progressring: Transposed C++ code from WinUI 06621fd
- Added
NotImplemented
Attribute forTopAppBar
andBottomAppBar
ccfa190 - Update feature availability for the other platforms fc06be3
- lottie: [iOS] Added support for
Progress
,IsPlaying
&Duration
9e11da1 - lottie: [Wasm] Added
Progress
,IsPlaying
andDuration
c0887fb - Xml: Implemented
Windows.Data.Xml.Dom
APIs 6f901e1 - Add support for Prism library
dotnet new
template 18cccbb - Removed conditional compilation for
NotImplemented
attributes 6362cfb - Support
WebView.DocumentTitle
on macOS 0f54709 - (macOS) Add
CurrentOrientation
support 1d0a89a - (macOS) Add default
NativeOrientation
dfd6cea - (macOS) Add default property state to the Style a52d326
- (macOS) Add delegate for
PasswordBox
7eee1ef - (macOS) Add
IsPasswordRevealButtonEnabled
forPasswordBo
x b249253 - (macOS) Add
SecureTextBox
forPasswordBox
7e826cb - (macOS) Update
PasswordBox
implementation a087a21 - cursor: Support PointerCursor on macOS 057f6bd
- gradient: Added macOS support for RadialGradientBrush 3c93e6e
- PackageId: macOS support 062ea5d
- Support
ComboBox
on macOS 3ede85c
BREAKING CHANGES
- All targets are now using the AndroidX support libraries. If your
application uses explicit references to support libraries, you'll to upgrade
those as well.
Uno upgraded from:
- Xamarin.Android.Support.v4
- Xamarin.Android.Support.v7.AppCompat
- Xamarin.Android.Support.v7.RecyclerView
To :
- Xamarin.AndroidX.Legacy.Support.V4
- Xamarin.AndroidX.AppCompat
- Xamarin.AndroidX.RecyclerView
- Xamarin.AndroidX.Fragment
Bug Fixes
- [MacOS] Fix event handler not invoked in the sample app 9bbfa1a
- Fix support for TextBlock under Android 10 fdc7327, closes #2016
- android: Uno template for Android now reacts to all ConfigurationChanges 859da96
- android: various issues with readonly textblock 2dd4bc8
- android_geolocator: Request and validate permissions ed0d4e3
- animation: [iOS] Fix InvalidCastException when app resumes while animation is active 32dba9c
- commandbar: [iOS] Update CommandBar layout when Visibility changes fc18909
- dotnet_new: Fix automated uno packages version update during CI 87d0798
- dotnet_new: Update the publisher format 79f41dc
- flyout: Fix NRE from trying to close uncreated Popup in Flyout 18f0191
- gradient: Apply Log().IsEnabled for logging in generated code. f383dc6
- gradient: Fixed default values for Radius & Origin on RadialGradientBrush. d2d60a7
- gradient: LinearGradientBrush now derives from GradientBrush. ae1a6ad
- gradient: Removed [NotImplemented] on BrushMappingMode. 7f3c53c
- lottie: Fixed missing dependencies in NuGet package. 8d4012f
- lottie: improve assembly scanning. 326251e
- lottie: Updated Lottie-web to from 5.4.4 to 5.6.8 c49db32
- macos: Adjust default dotnet new sln configurations 76170a6
- mediaplayer: [iOS] Fix exception from MediaPlayerPresenter returning infinite desired height 3fd116d
- mediaplayer: Arranges the player even if the video ratio is of 0 as this will lead to a real video ratio. 0ac5e31
- mediaplayer: Fix invalid stop of the player when toggling the fullscreen mode. efe2e89
- mediaplayer: NRE when the surface is destroyed but the player has already been released. e29a537
- mediaplayer: Resets the MediaPlayer and its surface when setting its source to null. 70b79e8
- pointers: [iOS] Try to re-use pointer ID in order to detect DoubleTap 44df20e
- progressring: Fixed bug on Wasm where ProgressRing was stuck. c9d0ea0
- shapes: [WASM] StrokeDashArray is not published to native element 48b971f
- solidcolorbrush: [ANDROID][WASM] Color brushes added to Thumbtint, TrackTint, Fill, and Stroke missing opacity ff059c3
- xBind: Fix x:Bind parsing when ignorable directive is not present d17bd91
- (macOS) rename file name to match with class 9698914
- Add changes to packagediff ignore file 3f34de8
- Adjust screenshot comparer with missing ZipFile dependency 471a65d
- Adjust Uno.UI and Uno.UI.RemoteControl references in macOS template e6ba3da
- Adjust WebAssembly detection after a breaking change in
RuntimeInformation
bd00e78 - build error on CI 6fffaa8
- ci build - make field readonly c1c5eb3
- Fix http: samples working on macOS c0217b5
- Fix incorrect XAML parsing of x:Bind with ConverterParameter abb43f9, closes #3049
- Fix the wasmxfhead template creation was using blank uno app f5fe5e6
- Improve NativeFramePresenter.iOS implementation to fix concurrency issues. 7985a91
- property signature 9eca43a
- Remove explicit DependentUpon from BlankPage.vstemplate 6ed24a5
- popup: Update position when VerticalOffset changes 239cc2f
- RemoteControl: Make Wasm WebSockets dependency conditional to netstandard 2.0 c112690
- template: Adjust default organization for UWP
dotnet new
app template ff5171b - tooltip: Place tooltip relative to mouse pointer f63617f
- tooltip: Support views as direct TooltipService.ToolTip content 19482e8
- Fixes symbol icon Home not shown bde78f1
- Remove the sealed attribute from generated code (#2830) 2e80728, closes #2830
- Updated UWP Samples app signing certificate 4180cc6
Assets
10
The Uno 2.2 release is packed with new features, performance improvements and bug fixes, even if it's closely following the 2.1 release!
We're also hard at work on adding support for macOS apps (Thanks @MartinZikmund), and while we still do not have anything to announce, it's taking shape!
Among the implemented features, you'll find:
- Support for
MenuFlyout
,UIElement.ContextFlyout
andMenuBar
- Support for
ScrollBar
- Add support for
dotnet new unoapp
and macOS templates - Support for Electron hosted apps
ImageSource.SetSourceAsync
support for WebAssembly (Thanks @SuperJMN)- Support for
ColorAnimation
- Support for
Pedometer
for iOS and Android (Thanks @MartinZikmund) - Suppport for mouse wheel events (
PointerWheelChanged
) on WebAssembly - Support for
DropDownButton
from WinUI 2 (Thanks @MartinZikmund) - Many performance and memory updates impacting all platforms at various levels, such as giving a rough 20% improvement on controls creation on WebAssembly. A more detailed post will follow soon on that topic.
- Support for
ms-appdata
paths inImage
,MediaPlayer
(Thanks @MartinZikmund)
Uno is now built using C# 8.0 and VS 16.5 on Azure Devops hosted agents, which means that AndroidX and Android 10 support is close by.
And finally, many of the recent updates were targeted at improving the behavior of controls in the Windows Community Toolkit, with enabling DataGrid, TabView and Expander controls. On the topic of the DataGrid, there's still lots of work to be done, particularly around performance under WebAssembly, but this release updates now make the control useable.
Features
- [WASM] Added the ability to load images from bytes (9cfb29f)
- Add benchmark filter (1335d7b)
- Add MenuFlyout support (4fc3cb1)
- Add support for
dotnet new unoapp
and macOS templates (a591d69) - Add support for
UIElement.ContextFlyout
(5640745) - focus: Raise Control.GotFocus asynchronously (21d7758)
- add support for Electron. (a56a7d9)
- Add support for FindElementsInHostCoordinates (6231d0b)
- Added support for DropDownButton from MUX (de78481)
- ARM64 support for UWP in solution template (39230e7)
- animation: [WASM] Add fast-path for zero-duration animations (19ec739)
- animation: Implement ColorAnimation for iOS, Android, and WebAssembly (4b6ff56)
- animation: Support independently animating SolidColorBrush from shared resource (f6b3ce8)
- commandbar: Add support for native CommandBar.HorizontalContentAlignment on Android. (5e6ca82)
- focus: [WASM] Update FocusManager when browser window loses focus (3a61248)
- pointer: [WASM] Enable support of the PointerWheelChanged event (2a0d9fb)
- pointers: [WASM] Add support for the mouse wheel event (57ccc39)
- pointers: Wire-up the pointer wheel event (805e527)
- Using Uno blue accent color for WASM splash (cf4d56b)
- scrollbar: Add support for ScrollBar (9eadb8e)
- Async initialization of Pedometer (0e306c9)
- DatePicker now shows picker with today selected if no date is set (deef3dc)
- Implement the Thumb.Start horizontal and vertical offsets (9246668)
- Implemented AppDataUriEvaluator (a6f5d43)
- Implemented DropDownButtonAutomationPeer (a057ef8)
- Implemented pedometer on Android (cdf2cc6)
- Implemented Pedometer on iOS (617dd49)
- Remove monoandroid80 (1778a75)
- Remove the dependency on System.Xaml for .NET Core compatibility (9d8674a)
- Support for Frame.IsNavigationStackEnabled (d268db9)
- Support Lottie animations on iOS (17df575)
- wasm: Add CoreDispatcher support for threading (53304d5)
- WebView: Add DocumentTitle for Android and iOS (21ae5b2)
- Support of DataTransfer.DataPackage.RequestedOperation (a6a1479)
- Use C# 8.0 by default (9431fc9)
- Using ms-appdata paths in Image, MediaPlayer (42ecf36)
- (macOS) Add #2844 support for Image (c0d16ea)
- (macOS) Add image Asset in Sample proj (1f465a4)
- (macOS) Add Support for DisplayInformation (fa52844)
- (macOS) Support for XAML HotReload on the SampleApp (6387d57)
- [macOS] Add support for TextBox (8c99072)
- [macOS] ScrollViewer - show scroll bar (47dfe8a)
- [macOS] Show full samples list (f080e87)
- [macOS] Update properties on scroll (99ad526)
- Add support for Lottie on macOS (1b8c6e5)
- Added DoubleAnimation, DoubleAnimationUsingKeyFrames on macOS (3eea4b2)
- DisplayRequest: macOS support (80ce63e)
- ListView - allow WASM/macOS implementation to be tested on iOS/Android (c22a951)
- Share WASM ListView implementation with macOS (1c3541b)
- Support playback rate on iOS/macOS (f21f458)
BREAKING CHANGES
-
The
Uno.Xaml
parser is now always usedThe System.Xaml assembly is not always available, particularly when building under .NET Core.
-
The monoandroid80 target is not available anymore.
It has been deprecated by Google.
-
Uno is now built using VS2019 16.4
It does not support building Xamarin iOS/Android 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'.
-
commandbar: Alignment of native CommandBar.Content used to be
Stretch
/Stretch
and is now aligned withTop
/Left
on UWP.Use
CommandBar.HorizontalContentAlignment
and first element of content's VerticalAlignment to control.
Performance Improvements
- [Wasm] Adjust FrameworkTemplatePool to keep hard refs to pooled instances (8881200)
- [Wasm] Adjust GC parameters for the Samples app. (eacc8b7)
- [Wasm] Cache Marshal.SizeOf calls in TSInteropMarshaller (a967c22)
- [Wasm] Disable try/finally block in DefaultArrayPool. (fce040a)
- [Wasm] Ensure UIElement instances release their children (1f48c6b)
- [Wasm] Improve IsHitTestVisible (9f5968d)
- [Wasm] Remove pass-through try/catch block in InvokeJSUnmarshalled (3175803)
- [Wasm] Set Rectangle arrange SVG position using binary invocation (e4aade2)
- [Wasm] Use strings for js method dispatch table (a2b1f63)
- Aggregate DependencyObject finalizers (32041c2)
- Don't reflect on
UnsetValue
(27e0fc1) - Improve TypeScript DOM classes list construction (cea17c7)
- Improve Wasm color conversion ToHexString (018dcdd)
- Initialize FrameworkElement style if new parent is not null (90d0421)
- Reduce memory allocations for inherited properties management (d659c3d)
- Reduce memory pressure during object creation (50d99e6)
- Use Array pooling in DependencyPropertyDetailsCollection (c3f0978)
- Use strings for javascript object maps lookups (58cee71)
- grid: Reduce memory pressure caused by GCHandle (5183d87)
- animation: [WASM] Add fast-path for zero-duration animations (19ec739)
Bug Fixes
- ".Uno" in project names results in build errors (f3580b4)
- [Android/iOS] Layouter - Clipping were not properly applied. (245d255)
- [iOS] Restore original
ComboBox.IsPopupFullscreen
behavior (5ac0026) - [macOS] Add NativeCtorGenerator support (210b30b)
- [macOS] Adjust native styles defaults (107f68d)
- [macOS] Create Layer for ArbitraryShapeBase (a367030)
- [macOS] Tentative performance update for NSTextStorage. (31bd64f)
- [uap10] Fix ElevateView Generic.xaml packaging (1c48cfd)
- [Wasm] Adjust linker settings for FocusManager.ReceiveFocusNative (7524d6e)
- [WASM] Fix clearing the Data of a Path (7b4bcb4)
TextElement.Background
cannot be set to null (d6dfec8)- Add internal Control.UpdateVisualState (6520e1e)
- Add support for ItemCollection.Size (4c7d3f1)
- Added missing methods to DiffIgnore (9715429)
- Adjust DependencyObjectGenerator for macOS Support (bc2841f)
- Adjust measure/arrange phase (c8f9917)
- ApplicationData.Current.[LocalFolder|RoamingFolder] throws a NRE exception (7c14c5a)
- Avoid crash in Lottie on Android (7a45a80)
- BREAKING CHANGE Thumb Drag events args changes are no longer cummulative! (ad93fd5)
- C# 8.0 configuration (b77bc5c)
- change BuildVersionCodes.P to integer (28) (98fd65a)
- Change ExpandCollapsePatterIdentifiers not to throw (a549e87)
- Changed IsNavigationStackEnabledProperty to property (7de5135)
- DatePicker dismiss + DatePicker styling (cb4d6b9)
- DatePicker text parts width (8894e25)
- DisplayInformation UITest (32a307d)
- FindName cannot dig into UIElement.ContextFlyout and Button.Flyout (1aa9852)
- Fix no pointers events on WASM for elements nested in a manipulation aware element. (fcb7178)
- Fix Shapes hit test (was requiring a Background ... while this property is not event on the WinUI API) (f625c31)
- Fixed build issue (0a5d1d5)
- Fixed DefaultPreferredBodyFontSize to SystemFontSize (125a15f)
- Fixed ReportInterval in existing Android sensors (cfd94b2)
- Fixed xmlns for UWP (d73ae26)
- flyout cannot be light dismissed by clicking outside of its content (cb44458)
- Frame.Navigating can cancel (d5bec47)
- GetRelativePath is not available in Standard 2.0 (5580d8b)
- Improved handling of URI host (d78f1f3)
- invalid redondent cast ... (5b74c54)
- ListView was throwing an exception if changing the SelectionMode while element were selected (e0289f2)
- Log exceptions domain and TaskScheduler in the SamplesApp (0e77b9d)
- make sur eto not filter ou event for implicit captures (425cf4b)
- Make sure
VisibleBoundsPaddings
continue to work after a resize. (c88ab58) - Make UIElement KeyboardAccelerators an intenal DP (d7e5502)
- MenuBar now supports dark theme (508598b)
- MenuBarItem IsFlyoutOpen and Invoke are public (126f837)
- MessageDialog buttons callbacks not being invoked on macOS. (206dc8e)
- Move Lottie sample animations for Android (67844f7)
- null Fill appears black on WASM + fix the hit testing accordingly (6a8b96e)
- path defect caused by known vswin bug (#1349) (82f9fca)
- Prevent Shapes (mapped to svg) to stoll the pointer events when they are not visible (fd4e1ab)
- Properly set Lottie animation properties on Android (06cb7d2)
- android: Changed the logic of previous commit. (6f25d6a)
- android: Fix for bug #2879 (c4dd713)
- android: Invoke
.forceLayout()
only when appropriate. (c4d26e3) - android: screenshot issue with status bar (25010dd)
- android: shapes samples were crashing because Points were not populated. (58bc764)
- animation: Correctly report animations targeting SolidColorBrush.Color as independent (2b0ffd8)
- articles: fix broken paths to images in .md files (0109740)
- brush: [WASM] Update FrameworkElement.Background when SolidColorBrush.Color changes (8066a19)
- codegen: BindableMetadata properly globalizing generic type paremeters (d0f62c5)
- commandbar: [iOS] Fix text in CommandBar title not appearing after navigation (3f23de0)
- ContentDialog: Content dialog can be closed if Closing event was canceled (4f8e93e)
- ContentPresenter: [Wasm] ContentPresenter background is not applied properly (b7a2d71)
- elevatedview: Make sur the
ElevatedView
recopy itsTemplatedParent
. (e894ffb) - elevatedview: Patch a TemplateBinding problem. (ede532c)
- focus: [Android] Fix NRE when calling ProcessFocusChanged() with no inner TextBoxView (fdf44ff)
- focus: [WASM] Adjust native focus application for TextBox (c6a55b1)
- image: wrong measure for images on iOS (4f825ba)
- images: Images with margin were returning wrong measure size. (917cee0)
- ios: UIDatePicker would sometimes offset day/month/year when changing other parts (ca19267)
- layouting: Ensure negative Margin doesn't push DesiredSize below 0 (db71724)
- perf: [WASM] Listen to focus changes at top level only (cc73d46)
- point: Fix comparing a Point to null NRE (5899731)
- pointers: Fix UI tests for wasm (f928c55)
- pointers: Restore the NotImplemented flag for platforms other than WASM (057e8a9)
- pointers: Restore the WinUI parameter name for pointer overloaddable methods (9c4cff6)
- reg: Fix dotnet new templates not registered properly (527e165)
- Slider: macOS vertical thumb movement is flipped (36fd57e)
- tooltip: Fix tooltip may appear if the control is unloaded (27b4a44)
- visibleboundspadding: .SizeChanged only on iOS (543dd66)
- visibleboundspadding: bring back handler on LayoutUpdated (67d0ed2)
- Removed unusued fields on FrameworkElement. (3f10ca0)
- repository user name (cb688cf)
- resolved build by removing dangling comma (59739c3)
- Restore the protected virtual OnChildrenChanged in Shape (639eb8c)
- Slider value invalid when tapping over the line. (0113f8b)
- SvgElement now inherits from UIElement, so it won't request a FE.Background to be HitTestVisible (83eb321)
- wasm: DatePicker rendering (01ad446)
- Transform to visul now takes in consideration render trasnform origin (eca0314)
- VisibleBoundsPadding causing text alignment problem on iOS. (d349323)
- VisibleBoundsPadding was setting Padding too late. (e4c5e1a)
Assets
9
Uno Platform 2.1 release is packed with over 50 new features allowing for increased productivity as well as getting you up and running with Surface Duo. In addition to bigger milestones such as x:Bind, the TwoPaneView and NumberBox controls we also shipped another 50 new features and closed 45 issues you raised.
Among many other updates:
- Support for
x:Bind
functions (with BindBack, DefaultBindingMode) - Support for the Surface Duo has been added and the
TwoPaneView
control - Support for the WinUI 2.3 NumberBox control
ElevatedView
in the toolkit to add shadows around controls- Support for
Grid.ColumnSpacing
andGrid.RowSpacing
- Multitouch pointers support
- Support for
UIElement.RightTapped
andHolding
You'll also notice some progress on the macOS support, but nothing concrete to share at this point.
Big thank you to all our contributors for the support !
Here's the full change log:
Features
- Added new
ElevatedView
in theUno.Toolkit
to provide elevation & rounded corners on all platforms
(not supported on Windows yet, because Uno needs to target framework10.0.18362.0
) - [Android] Support for
Application.Current.Exit
- Support for
Windows.Storage.FileProperties.BasicProperties.DateModified
- Added CornerRadius support to more default styles to match UWP (for list of updated styles see PR [#2713])
- Support for
FontIcon
on macOS - Support for
PhoneCallManager.ShowPhoneCallUI
on macOS - Support for full screen mode on macOS
- Support for
ShowComposeSmsMessageAsync
on macOS - Support for
Flyout
on macOS - Support for
HingeAngleSensor
for Surface Duo - Support for
Geolocator
on macOS - Support for
Clipboard
get/set Text content on macOS - Support for
ApplicationView.Title
on Android and macOS - Support for
AnalyticsInfo
on macOS - Support for
TryEnterFullScreenMode
andExitFullScreenMode
on WebAssembly - Support for
MessageDialog
on macOS - [Android] support of
KnownFolders.MusicLibrary
andVideosLibrary
- Add support for
StorageFile.DateCreated
- Support for
ApplicationView.IsScreenCaptureEnabled
on Android - Add support for
StorageFile.DeleteAsync()
- Support for
PointerDown
,PointerUp
PointerEntered
,PointerExited
andPointerMoved
events on macOS - Support for
Launcher
API on macOS, support for special URIs - Support for
EmailManager.ShowComposeNewEmailAsync
- Add support for
StorageFolder.CreateFileAsync(string path)
- Add support for ApplicationViewTitleBar.BackgroundColor on WASM
- Add support for Automation SetDependencyPropertyValue in Uno.UITest
- Added support for using a
string
value in aStaticResource
when using `CreateFromStringAttribute' - [Android] Adds support for
FeatureConfiguration.ScrollViewer.AndroidScrollbarFadeDelay
- Add support for
Grid.ColumnSpacing
andGrid.RowSpacing
- Add clarification in documentation for adding automated UI tests
- Add support for
Popup.LightDismissOverlayMode
, as well asDatePicker.LightDismissOverlayMode
andFlyout.LightDismissOverlayMode
. To modify the background color of the Overlay see Popup.md, DatePicker.md, TimePicker.md and Flyout.md TransformToVisual
now returns a real transform to convert coordinates between views (was only returning a translate transform to offset the origin of controls)- Multiple pointers at same time on screen (a.k.a. Multi-touch) are now supported
- Add support for WinUI 2.3
NumberBox
- Add support of the
UIElement.RightTapped
event (The context menu won't appear anymore on WASM, except for theTextBox
) - Add support of the
UIElement.Holding
event - [MacOS] Support for
ScrollViewer
- [MacOS] Support for
LinearGradientBrush
- Add support for TwoPaneView control.
- Add support for
ApplicationView.GetSpanningRects
- Add base support for API Extensibility through
Uno.Foundation.Extensibility.ApiExtensibility
andApiExtensionAttribute
- Add support for Surface Duo through the
Uno.UI.DualScreen
package - Add support for enums in
x:Bind
functions andBindBack
- Add XamlReader support for Primitive static resources
- [Android] Add support for non-native
Popup
by default. Can be enabled throughFeatureConfiguration.Popup.UseNativePopup
set to false (See #2533 for more details) - Add template tags for the VS2019 VSIX template search experience
- [iOS] #2746 Fix border thickness when a corner radius is set
- [Android] #2762 ProgressRing wasn't displaying inside a StackPanel
- #2797 Stack overflow in ListView when changing SelectedItem to and from invalid value
- [Android] #2761 Control with AreDimensionsConstrained and Margin set not measured correctly
Breaking changes
IconElement.AddIconElementView
is nowinternal
so it is not accessible from outside.- On iOS, the parent of the
ListViwItem
is now theNativeListViewBase
(was theListView
it self) as described here https://github.com/unoplatform/uno/blob/master/doc/articles/controls/ListViewBase.md#difference-in-the-visual-tree
Bug fixes
- [iOS] Applying a
<RenderTransform>
on an image was producing an incorrect layout result. - Add support for
CornerRadius
in defaultComboBox
style - Fix for samples app compilation for macOS
- [#2465] Raising macOS Button Click event
- [#2506]
DesignMode.DesignMode2Enabled
no longer throws (is alwaysfalse
on non-UWP platforms) - [#915] FontFamily values are now properly parsed on WebAssembly, updated docs with new info
- [#2213] Fixed
ApplicationData
on MacOS, added support forLocalSettings
- Made macOS Samples app skeleton runnable (temporarily removed ApplicationData check on startup, fixed reference), added xamarinmacos20 to crosstargeting_override sample
- [#2230]
DisplayInformation
leaks memory - [WASM] Shapes now update when their Fill brush's Color changes
- [WASM] Fix bug where changing
IsEnabled
from false to true onControl
inside anotherControl
didn't work - [Wasm] Add arbitrary delay in Safari macOS to avoid StackOverflow issues
- #2227 fixed Color & SolidColorBrush literal values generation
- [Android] Fix bug where setting Canvas.ZIndex would apply shadow effect in some cases
- #2287 Vertical
ListView
containing a horizontalScrollViewer
: horizontal scrolling is difficult, only works when the gesture is perfectly horizontal - #2130 Grid - fix invalid measure when total star size is 0
- [iOS] Fix invalid image measure on constrained images with
Margin
- [#2364] fixed missing Xaml IntelliSense on newly created project
ViewBox
no longer alters its child'sRenderTransform
- [#2033] Add Missing
LostFocus
Value toUpdateSourceTrigger
Enum - [Android] Fix Image margin calculation on fixed size
- [Android] Native views weren't clipped correctly
- [Android] Border thickness was incorrect when CornerRadius was set
- [iOS] #2361 ListView would measure children with infinite width
- [iOS] Fix crash when using ComboBox template with native Picker and changing ItemsSource to null after SelectedItem was set
- [#2398] Fully qualify the
MethodName
value for `CreateFromStringAttribute' if it's not fully qualified it the code - [WASM] Fix bug where changing a property could remove the required clipping on a view
- #2294 Fix TextBox text binding is updated by simply unfocusing
- [Android] Fix unconstrained Image loading issue when contained in a ContentControl template
- Enable partial
NavigationView.ItemSource
scenario (#2477) - [Wasm] Fail gracefully if IDBFS is not enabled in emscripten
- [#2513] Fix
TransformGroup
not working - [#1956] Fis iOS invalid final state when switching visual state before current state's animation is completed.
- Fix
Selector
support for IsSelected (#1606) - [Android] 164249 fixed TextBox.Text flickering when using custom IInputFilter with MaxLength set
- [MacOS] Fix exceptions when modifying UIElementCollection, layouting view with null
Layer
- Fix invalid conversion when using ThemeResource (e.g. Color resource to Brush property)
- Fix XamlBindingHelper.Convert double to GridLength
- [Android] Adjust
TextBlock.TextDecorations
is not updating properly - Adjust
XamlBindingHelper
forGridLength
andTimeSpan
- Add missing
ListView
resources - #2570 [Android/iOS] fixed ObjectDisposedException in BindingPath
- #2107 [iOS] fixed ContentDialog doesn't block touch for background elements
- #2108 [iOS/Android] fixed ContentDialog background doesn't change
- #2680 [Wasm] Fix ComboBox should not stretch to the full window width
Assets
10
This release is bits that were announced at UnoConf in September, and it's a big one! It contains lots of new features, improvements, and bug fixes.
This release is now a community effort, thanks to Hacktoberfest, an also to community contributors such as @MartinZikmund, @pkar70, @kakone, @pdecostervgls, @gevart and all the Uno Team people!
Note: To install the latest Visual Studio Extension to use XAML Hot Reload, you'll need to do it from the release files below for the next few days, as the release there is still 1.45. We're discussing publication issues with the Microsoft VS Marketplace team about that, we'll update the release notes accordingly.
XAML Hot Reload for iOS, Android and WebAssembly
XAML Hot Reload is now supported, giving ability to design the UI of a running application directly from Visual Studio. Best of all, it can update multiple platforms at once!
Head to this guide to get started.
Dark mode support
ThemeResources support to enable Dark Theme has been included, with automatic detection on iOS, Android and WebAssembly. It's not yet supporting live update from one theme to another, but this is coming soon!
You can view the results of this support in the Uno Calculator (WebAssembly, App Store and Play Store), in the Xaml Controls Gallery WebAssembly App, and the Windows Communit Toolkit WebAssembly App.
Pointer and Manipulation events
This release adds extensive support for Pointer events and Manipulation events, paving the way for more advanced controls support such as data grids, and other interactive controls.
GitPod WebAssembly development support
GitPod enables very interesting scenarios for friction-less development with Uno, as well as contributing to Uno. Because there is nothing to install, and that everything runs in your browser, it lowers the barrier to entry for developing, as there's no step of "setting up the environment" that can take such a long time on some cases.
GitPod also enables live PR validations, with the pre-build features, allowing to test the live bits of a PR inside of a running VS Code instance, simply by clicking on the "review in GitPod" button in every PR.
Get started [here with this guide].(https://github.com/unoplatform/uno/blob/master/doc/articles/features/working-with-gitpod.md).
Visual Studio 4 Mac compatibility for iOS and Android
Building an app for iOS and Android in Visual Studio for mac is now supported, with initial support for XAML intellisense, in release 8.4.
Uno Platform WebAssembly Renderers for Xamarin.Forms
This release also enables the support for WebAssembly Renderers for Xamarin Forms 4.3.
Other additions
- Large improvements in
UIElement
clipping behavior - Support for hardware APIs such as
Windows.Devices.Lights.Lamp
,Geolocator
,Gyrometer
,Magnetometer
,Accelerometer
,VibrationDevice
,Barometer
- Support for system apis
JumpList
,PhoneCallManager
,DisplayInformation
PathGeometry
andPolyLine
support for WebAssembly- XAML type conversions through
CreateFromStringAttribute
- Support for
ContentDialog
,PersonPicture
,TooltipService
,ToggleButton.IsThreeState
andTextBox.IsReadonly
(WebAssembly) VisualState
setters support for static, theme resources and template bound values
Lots of work has been done to make Uno more reliable, with the inclusion of UI and on-device unit testing for iOS, Android and WebAssembly as part of the PR process. Each PR is now validated by running an extensive set of tests through the uno.uitest cross-platform UI Testing library.
This release also includes updates that enable support for ReactiveUI (samples) and VLC
Here's the full list:
Features
- #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 inApp.xaml
- Support for
Gyrometer
on Android, iOS and WASMReadingChanged
ReportInterval
- Support for
Launcher.QueryUriSupportAsync
method on Android and iOS - #1493 - Implemented the
Windows.Input.PointerUpdateKind
Enum. - #1428 - Add support for horizontal progressbars to
BindableProgressBar
on Android. - Add support for
Windows.Devices.Sensors.Magnetometer
APIs on iOS, Android and WASMReadingChanged
ReportInterval
- Add support for
Windows.UI.StartScreen.JumpList
APIs on Android and iOS- Includes
Logo
,DisplayName
andArguments
- The activation proceeds through the
OnLaunched
method same as on UWP
- Includes
- Refactored
DrawableHelper
to theUno
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 WASMReadingChanged
Shaken
ReportInterval
- Align
ApplicationData.Current.LocalSettings.Add
behavior with UWP fornull
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
propertiesLogicalDpi
,ResolutionScale
,ScreenWidthInRawPixels
,RawPixelsPerViewPixel
, andScreenHeightInRawPixels
¸ - Permit
DependencyProperty
to be set reentrantly. E.g. this permitsTextBox.TextChanged
to modify theText
property (previously this could only be achieved usingDispatcher.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 supportedDark
andLight
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
, includingClosing
andClosed
events - Permit
DependencyProperty
to be set reentrantly. E.g. this permitsTextBox.TextChanging
to modify theText
property (previously this could only be achieved usingDispatcher.RunAsync()
). - Implement
TextBox.TextChanging
andTextBox.BeforeTextChanging
. As on UWP, this allows the text to be intercepted and modified before the UI is updated. Previously on Android using theTextChanged
event would lead to laggy response and dropped characters when typing rapidly; this is no longer the case withTextChanging
. - [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
'sContent
when this one is aContentControl
.
You can deactivate this behavior like this:FeatureConfiguration.ContentPresenter.UseImplicitContentFromTemplatedParent = false;
- Add support for
Selector.IsSynchronizedWithCurrentItem
- Add support for
CoreApplication.MainView
andCoreApplication.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
ThemeResource
s with different types (e.g.: mixingSolidColorBrush
andLinearGradientBrush
) - Add support for BitmapSource.PixelWidth and Height
- Preliminary support for
ColumnDefinition.ActualWidth
andRowDefinition.ActualHeight
. - Updated VisualTree of an app with Visibility for each items.
- Add support for
CompositionTarget.Rendering
event. - Add support for
IObservableVector<T>
inItemsControl
- [#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 prebuilds
- #880 Added added implicit conversion for double to Thickness
- Add Android support for
CoreApplication.GetCurrentView().TitleBar.ExtendViewIntoTitleBar
to programatically 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
andToggleButton.Indeterminate
- [Wasm] Add support for
TextBox.IsReadonly
Breaking changes
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 usesTextChanging
should be preferred.- [Android]
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 settingShouldForceDisableSpellCheck = false
, perTextBox
. TextBox.Text = null
will now throw an exception, as on UWP. Pushingnull
via a binding is still valid.- Projects targeting Android 8 must now use Xamarin.GooglePlayServices.* 60.1142.1 (60.1142.0 has been unlisted)
- Projects targeting Android 9 must now use Xamarin.GooglePlayServices.* 71.1600.0
- [iOS] UIWebView is deprecated and replaced with WKWebView (ITMS-90809: Deprecated API Usage - Apple will stop accepting submissions of apps that use UIWebView APIs . See https://developer.apple.com/documentation/uikit/uiwebview for more information.)
- [iOS] If you set the
ManipulationMode
to something else thanSystem
orAll
, the DelaysContentTouches is going to be disabled on all parentScrollViewer
- [#1237] Static resources defined in App.xaml were not processed and registered properly
This 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.
- [WASM] The tranform returned by
UIElement.TransformToVisual
is now including scale, rotation or any custom transformation that was declard on a parent element (transform was only including translate components)
Bug fixes
- #2093 Fix missing measurement option for polyline and polygon
- Font size, used for ComboBoxItems, are same as in ComboBox content (not smaller)
- #2023 Android WebView.NavigateToString doesn't throw exception even when string is very long.
- #2020
ContentControl
no longer display the datacontext type when ContentTemplate and content are empty - #1987 Missing XML comment warnings are disabled on generated code
- #1939 Handles nullables types in XAML file generator
- #1741 On Android,
ApplicationData.Current.[LocalFolder|RoamingFolder]
can now be used in the ctor of App.xaml.csThis change introduces a new constructor in
Windows.UI.Xaml.NativeApplication
that requests a delegate. In the Visual Studio Templates for Uno Platform, theMain.cs
for 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. - [#1767] Invalid
this
keyword generated forStoryboard.SetTarget
- [#1781] WASM Images are no longer draggable and selectable by default to match UWP
- #1771 Fix ".Uno" in project names resulted in build errors.
- #1531 Fix an issue with VirtualizePanelAdaptater by adding a cache where the ItemSources length change and created a OutOfRangeException
- [WASM] #1518 Fix Navigation Issue Where SystemNavigationManager.enable() is called twice and clear the stack history
- #1278 the XAML sourcegenerator now always uses the fully qualified type name to prevent type conflicts.
- #1392 Resolved exceptions while changing cursor color on Android P.
- #1383 resolve Android compilation errors related to Assets filenames: "Invalid file name: It must contain only"
- #1380 iOS head generated by Uno Solution Template now specifies MinimumOSVersion, in line with XF so first compile is successful.
- #1276 retrieving non-existent setting via indexer should not throw and
ApplicationDataContainer
allowed clearing value by callingAdd(null)
which was not consistent with UWP. - [iOS] Area of view outside Clip rect now allows touch to pass through, this fixes NavigationView not allowing touches to children (#1018)
ComboBox
drop down is now placed following a logic which is closer to UWP and it longer flickers when it appears (especilly on WASM)- #854
BasedOn
on a<Style>
inApp.Xaml
were not resolving properly - #706
x:Name
inApp.Xaml
's resources were crashing the compilation. - #846
x:Name
on non-DependencyObject
resources were crashing the compilation - [Android/iOS] Fixed generated x:uid setter not globalized for Uno.UI.Helpers.MarkupHelper.SetXUid and Uno.UI.FrameworkElementHelper.SetRenderPhase
- Fix invalid XAML x:Uid parsing with resource file name and prefix (#1130, #228)
- Fixed an issue where a Two-Way binding would sometimes not update values back to source correctly
- Adjust the behavior of
DisplayInformation.LogicalDpi
to match UWP's behavior - [Android] Ensure TextBox spell-check is properly enabled/disabled on all devices.
- Fix ComboBox disappearing items when items are views (#1078)
- [iOS] TextBox with
AcceptsReturn=True
crashes ListView - [Android/iOS] Fixed Arc command in paths
- Changing the
DataContext
of an element to a new value were pushing the properties default
value on data bound properties before setting the new value. - [Android]
.Click
on aButtonBase
were not raising events properly - #1350 Vertical Slider was inverting value when tapped
- TemplateReuse not called when dataContext is set
- [WASM] #1167 Apply
IsEnabled
correctly toTextBox
(innerTextBoxView
is now correctly disabled) - [Android/WASM] Fix MaxLength not respected or overwriting text
- Settings collection-based properties on root node in XAML were leading to C# compilation errors
- Properties on root node in XAML were not applied when there was no content (sub-elements)
- [Android] GroupedListviewHeaders were causing scrolling lag, missing flag
- Flyout that are than anchor but fit in page were defaulting to full placement.
- [iOS]Fixed DatePickerFlyout & TimePickerFlyout not being placed at the bottom
- [Android] Animated content is cut off/glitchy when RenderTransform translation is applied (#1333)
- #1409 Provide a better error-message on Page-Navigation-Errors
- Fix NRE when using custom
Pivot
templates. - Fix iOS CompositionTarget handler race condition
- [Wasm] Fix TextBoxView SelectionStart/SelectionEnd value parsing
- [Wasm] Don't fail on FrameworkElement.Dispose()
- [Android] ScrollViewer were no more clipping the scrollable area.
ComboBox
's ControlTemplate was requiring a binding to TemplatedParent for thex:Name="ContentPresenter"
control. Now aligned with UWP by making this binding in the control itself.- #1352
ThemeResource
bugfixes:StaticResource
not working insideResourceDictionary.ThemeDictionaries
- Using a
ThemeResource
on the wrong property type shouldn't raise compile-time error (to align with UWP)
- Fix layout bug in Image control.
- [#1387]
ComboBox
: Fix DataContext was propagated to<ContentPresenter>
when there was no selected item, causing strange display behavior. - #1354 fixed Recycler.State desync issue
- #1533 [Wasm] Fix measure caching for zero sized measure
- [iOS(iPad)]
ComboBox
: the combobox wasn't fully expanding vertically on first opening. Popup
&ComboBox
(and other controls usingPopup
) were not behaving properly whenIsLightDismissable
were set totrue
.- [Wasm] Fix unloaded UIElements are made visible if measured and arranged
- [Android] Fix java NRE handing touch events on detached view
- [Pivot] Add support for non PivotItem items
- #1557 Fix local DataContext on ContentDialog is overwritten
- [WASM] Fix display for multiple popups (e.g. ComboBox inside of ContentDialog)
- [Android] Fix invalid ImageBrush stack overflow with delayed image reuse
- CommandBar fixes (AppBarToggleButton, AppBarButton)
- Fix Symbols rendering in sample app
- Fix multiple invocations of OnLoaded when hosting a control in ItemsControl
- [Android] Fix glitchy animations inside ListView with transformed ancestor.
- Adjust
AppBar
andCommandBar
styles. - Adjust the Stretch mode of
BitmapIcon
content - Fix invalid Image size constraint
- [Android] MenuFlyout was misplaced if view was in a hierarchy with a RenderTransform
- Fix color refresh of
BitmapIcon
monochrome Foreground - [IOS] DatePickerFlyout min and max year were resetting to FallbackNullValue
- [Android] Fix bug in
ListView
when using anObservableCollection
as its source and usingHeader
andFooter
. - #1924 Fix Android
ListView.HeaderTemplate
(and.FooterTemplate
) binding bug when changingHeader
andFooter
. - 164480 [Android] fixed a text wrapping issue caused by layout height desync
- [Wasm] Fix unable to reset
Image.Source
property - #2014 Fix iOS Picker for ComboBox not selecting the correct item.
- [iOS] #977 Fix exception when setting MediaPlayerElement.Stretch in XAML.
- #1708 Fix initial Flyout placement and window resize placement
- [Android] #2007 ComboBox does not take Window.VisibleBounds to position its popup
- [Wasm] Fixes the measure of a TextBoxView #2034 #2095
- [Android] [Wasm] Recent clipping improvements were incompleted. Fixed a case where a control was allowed to draw itself to use more than available place in the arrange phase.
- [iOS] Fix negative result value of TimePicker. Now value range is limited from 0 to 1 day
- #2129 WebAssembly Bootstrapper update to remove the implicit .NET 4.6.2 dependency, and support for long file paths on Windows.
- #2147 Fix NRE in android-specific TextBox.ImeOptions
- #2146 [iOS] ListView doesn't take extra space when items are added to collection
Assets
7
jeromelaban released this
Here's the XAML Hot Reload Preview 1 for Uno Platform!
To install this release, please read the following guide.
MatFillion released this
Features
- Add support for
Windows.System.Display.DisplayRequest
API on iOS and Android - Add support for the following
Windows.System.Power.PowerManager
APIs on iOS and Android:- BatteryStatus
- EnergySaverStatus
- PowerSupplyStatus
- RemainingChargePercent
- PowerSupplyStatusChanged
- EnergySaverStatusChanged
- RemainingChargePercentChanged
- BatteryStatusChanged
- Updated
CheckBox
glyph to match UWP style on all platforms - Add support for the following
DisplayInformation
properties on iOS and Android: - Add support for
CurrentInputMethodLanguageTag
andTrySetInputMethodLanguageTag
on Android, iOS and WASM - Add support for
ChatMessageManager.ShowComposeSmsMessageAsync
(andChatMessage
Body
andRecipients
properties) on iOS and Android - Add support for the following
DisplayInformation
properties on iOS and Android:- CurrentOrientation
- LogicalDpi
- NativeOrientation
- RawDpiX
- RawDpiY
- ResolutionScale
- StereoEnabled
- RawPixelsPerViewPixel
- DiagonalSizeInInches
- ScreenHeightInRawPixels
- ScreenWidthInRawPixels
- AutoRotationPreferences
- Performance improvements
- Use
Span<T>
for Grid layout - Optimize Wasm text measuring
- Performance improvements in
TSInteropMarshaller.InvokeJS
- Use
- [Wasm] Improve TextBlock measure performance
- [Wasm] Improve PivotItem template pooling
- 150233 [Android] fixed status-bar, keyboard, nav-bar layout on android
- Add support for Brush implicit conversion (Fixes #730)
- Add
XamlReader
support for top levelResourceDictionary
(#640) - Add support for IDictionary objects in XAM (#729)
- Add support for Binding typed property (#731)
- Add support for
RelativeSource.Self
bindings - 149377 Improve performance of
TimePicker
andDatePicker
on iOS. - 145203 [iOS] Support ScrollViewer.ChangeView() inside TextBox
- 150793 [iOS] Add ListView.UseCollectionAnimations flag to allow disabling native insert/delete animations
- 150882 [iOS] Fix visual glitch when setting new RenderTransform on a view
- [Wasm] Add support of hardware/browser back button in
SystemNavigationManager.BackRequested
- [Wasm] Added support for custom DOM events
- WebAssembly UI tests are now integrated in the CI
- Enable support for macOS head development
- [Wasm] Add NativeXXX styles (which are aliases to the XamlXXX styles)
- [Wasm] Enable persistence for all ApplicationData folders
- [Wasm] Add Samples App UI Screenshots diffing tool with previous builds
- Add
PasswordVault
on supported platfrosm - [Android] Updated support libraries to 28.0.0.1 for Android 9
- Add support for
x:Load
- [Wasm] Restore support for
x:Load
andx:DeferLoadStrategy
- [Wasm] Scrolling bar visibility modes are now supported on most browsers
- Fix invalid cast exception when using
x:Load
orx:DeferLoadStrategy
- Add
Windows.Globalization.Calendar
- [Wasm] Support of overlay mode of the pane
- Using State Triggers in
VisualStateManager
now follows correct precedence as documented by Microsoft - Add support for
FlyoutBase.AttachedFlyout
andFlyoutBase.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 definition- [Wasm] Improve TextBlock measure performance
- [Wasm] Improve Html SetAttribute performance
- MenuBar
- Import of MenuBar code, not functional yet as MenuItemFlyout (Issue #801)
- Basic support for macOS native system menus
- Ensure FrameworkElement.LayoutUpdated is invoked on all elements being arranged
- Fix Grid.ColumnDefinitions.Clear exception (#1006)
- 155086 [Android] Fixed
AppBarButton.Label
taking precedence overAppBarButton.Content
when used asPrimaryCommands
. - ComboBox
- Remove dependency to a "Background" template part which is unnecessary and not required on UWP
- Make sure that the
PopupPanel
hides itself if collapsed (special cases as it's at the top of theWindow
) - [iOS] Add support of
INotifyCollectionChanged
in thePicker
- [iOS] Remove the arbitrary
null
item added at the top of thePicker
- [iOS] Fix infinite layouting cycle in the iOS picker (Removed workaround which is no longer necessary as the given method is invoked properly on each measure/arrange phases)
- [Wasm] Refactored the way the text is measured in Wasm. Wasn't working well when a parent with a RenderTransform.
Grid
now supportsColumnDefinition.MinWidth
andMaxWidth
andRowDefinition.MinHeight
andMaxHeight
(#1032)- Implement the
PivotPanel
measure/arrange to allow text wrapping in pivot items - [Wasm] Add
PathIcon
support - Add support UI Testing support through for
Uno.UI.Helpers.Automation.GetDependencyPropertyValue
Breaking Changes
- The
WebAssemblyRuntime.InvokeJSUnmarshalled
method with three parameters has been removed. NavigationBarHelper
has been removed.- Localized Text, Content etc is now applied even if the Text (etc) property isn't set in Xaml. Nested implicit content (eg
<Button><Border>...
) will be overridden by localized values if available. - [Android] Unless nested under
SecondaryCommands
, theAppBarButton.Label
property will no longer be used for the title of menu item, instead use theAppBarButton.Content
property. ForSecondaryCommands
, keep usingAppBarButton.Label
. - The
WordEllipsis
was removed from theTextWrapping
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 theTextTrimming.WordEllipsis
)
Bug fixes
- DatePicker FlyoutPlacement now set to Full by default
- Semi-transparent borders no longer overlap at the corners on Android
- The
HAS_UNO
define is now not defined inuap10.0.x
target frameworks. - The
XamlReader
fails when a property has no getter Click
andTapped
events were not working property forButtonBase
on Android and iOS.- 146790 [Android] AndroidUseManagedLoadedUnloaded causes partial item shuffling in ListView
- 150143 [Android] Toggling
TextBox.IsReadOnly
from true to false no longer breaks the cursor WasmHttpHandler
was broken because of a change in the internal Mono implementation.- 140946 [Android] Upon modifying a list, incorrect/duplicated items appear
- 150489 [Android] PointerCanceled not called on scrolling for views with a RenderTransform set
- 150469 [iOS] Virtualized ListView items don't always trigger their multi-select VisualStates
- 1580172 ToggleSwitch wasn't working after an unload/reload: caused by routedevent's unregistration not working.
- 145203 [Android] Fix overflow on LogicalToPhysicalPixels(double.MaxValue), allowing ScrollViewer.ChangeView(double.MaxValue,...) to work
- 150679 [iOS] Fix path issue with Media Player not being able to play local files.
- Adjust support for
StaticResource.ResourceKey
- 151081 [Android] Fix Keyboard not always dismissed when unfocusing a TextBox
- [WASM] Support
not_wasm
prefix properly. (#784) - 151282 [iOS] Fixed Slider not responding on second navigation, fixed RemoveHandler for RoutedEvents removing all instances of handler
- 151497 [iOS/Android] Fixed Slider not responding, by ^ RemoveHandler fix for RoutedEvents
- 151674 [iOS] Add ability to replay a finished video from media player
- 151524 [Android] Cleaned up Textbox for android to remove keyboard showing/dismissal inconsistencies
- Fix invalid code generation for
x:Name
entries onStyle
in resources - [Wasm] Fix incorrect
TextBlock
measure with constrains - 151676 [iOS] The keyboard is closing when tap on the webview or toolbar
- 151655 [TimePicker][iOS] First time you open time picker it initializes the existing value to current time
- 151656 [TimePicker][iOS] Time picker always shows +1 minute than selected value
- 151657 [DatePicker][iOS] Date picker flyout displays 1 day earlier than selected value
- 151430 [Android] Prevent touch event being dispatched to invisible view
- Fixed overflow errors in Grid.Row/Column and Grid.RowSpan may fail in the Grid layouter.
- 151547 Fix animation not applied correctly within transformed hierarchy
- Setting the
.SelectedValue
on aSelector
now update the selection and the index - [WASM] Fix ListView contents not remeasuring when ItemsSource changes.
- [WASM] Dismissable popup & flyout is closing when tapping on content.
- 145374 [Android] fixed android keyboard stays open on AppBarButton click
- 152504 [Android] Pointer captures weren't informing gestures of capture, fixes Slider capture issue
- 148896 [iOS] TextBlock CarriageReturns would continue past maxlines property
- 153594 [Android] EdgeEffect not showing up on listView that contain Headers and Footers
- #881 [iOS] [Android] Support explicitly-defined ListViewItems in ListView.
- #902 [Android] Resource generation now correctly escapes names starting with numbers and names containing a '-' character
- 154390 Storyboard
Completed
callback were not properly called when there's not children. - [iOS] Fix bug where Popup can be hidden if created during initial app launch.
- #921 Ensure localization works even if the property isn't defined in XAML
- [WASM] Using x:Load was causing Collection was modified exception.
- Fix support for localized attached properties.
- Fix a potential crash during code generated from XAML, content were not properly escaped.
- #977 Fix exception when setting MediaPlayerElement.Stretch in XAML.
- [Android] Fix MediaPlayerElement.Stretch not applied
- [Android] Fix for ListView elements measuring/layouting bug
- Fix Grid.ColumnDefinitions.Clear exception (#1006)
- [Wasm] Align Window.SizeChanged and ApplicationView.VisibleBoundsChanged ordering with UWP (#1015)
- Add VS2019 Solution Filters for known developer tasks
- #154969 [iOS] MediaPlayer ApplyStretch breaking mediaplayer- fixed
- 154815 [WASM] ItemClick event could be raised for wrong item
- 155256 Fixed xaml generated enum value not being globalized
- 155161 [Android] fixed keyboard flicker when backing from a page with CommandBar
- Fix the processing of the GotFocus event FocusManager (#973)
- 116098 [iOS] The time/day pickers are missing diving lines on devices running firmware 11 and up.
- [iOS] Fix invalid DataContext propagation when estimating ListView item size (#1051)
- RadioButton was not applying Checked state correctly with non-standard visual state grouping in style
- [Android] Fix several bugs preventing AutoSuggestBox from working on Android. (#1012)
- #1062 TextBlock measure caching can wrongly hit
- 153974 [Android] fixed button flyout placement
- Fix support for ScrollBar touch events (#871)
LinearGradientBrush.EndPoint
now defaults to (1,1) to match UWP- Fixed an issue where a Two-Way binding would sometimes not update values back to source correctly
- [Android] A ListView inside another ListView no longer causes an app freeze/crash
- Date and Time Picker Content fix + Refactored to use PickerFlyoutBase (to resemble UWP implementation)
Assets
6
Release 1.44.1
Features
- Add support for
ICollectionView.CopyTo
- Add support for
ViewBox
- Add support for
AutoSuggestBox.ItemsSource
- Add support for
Selector.SelectedValuePath
(e.g. useful for ComboBox) - Add support for JS unhandled exception logging for CoreDispatcher (support for Mixed mode troubleshooting)
- [WASM] Improve element arrange and transform performance
- Restore original SymbolIcon.SymbolProperty as a C# property
- Add support for
MediaPlaybackList
- Update Uno.SourceGenerationTasks to improve build performance
- Move to the latest Uno.SourceGenerationTasks to improve project parsing performance, and allows for the removal of unused targets caused by nventive/Uno.SourceGeneration#2. Uno.Xaml and Uno.UI.BindingHelpers now only build the required targets.
- Move to net461 for test projects so the the Uno.Xaml project can be referenced properly
- Use the latest MSBuild.Sdk.Extras for actual parallel cross-targeted builds
- Move the nuget package versions to the Directory.Build.targets file so it's easier to change all versions at once.
- Add support for NavigationView Top Navigation
- Adjust
SystemChromeMediumHighColor
to use the Light theme - Add support for
FrameworkElement.GoToStateCore
- Adjust
ListView
measure/arrange for dynamic content - Add some missing default UWP styles
- The
FrameworkElement.IsLoaded
property is now public - Improve XAML generation error messages for unknown symbols
- Added default console logging for all platforms
- Add support for
Application.OnWindowCreated
- Added non-throwing stubs for
AutomationProperty
- Add missing system resources
- Add support for x:Bind in StaticResources (#696)
- Add support for x:Name late binding support to adds proper support for CollectionViewSource in Resources (#696)
PointerRelease
events are now marked as handled by theTextBox
KeyDown
events that are changing the cursor position (left/right/top/bottom/home/end) are now marked as handled by theTextBox
RoutedEventArgs.IsGenerated
returnsfalse
as generating events with Uno is not yet supportedAutomationPeer.ListenerExists
returnsfalse
as we cannot generating events with Uno is not yet supportedKeyUp
event properly sendsKeyEventArgs
to the controls- Add ItemsSource CollectionViewSource update support (#697)
- Add support for the
CollectionViewSource.ItemsPath
property - Fixed support for dots in resource names (#700)
- Add support for
BindingExpression.UpdateSource()
- Updated Android version to target Android 9.0
- The CI validates for API breaking changes
MediaTransportControls
buttons now use Tapped event instead of Click- Fixed Pointer capture issues on sliders on iOS
Breaking changes
- Make
UIElement.IsPointerPressed
andIsPointerOver
internal - You will not be able to build projects targeting Android 8.0 locally anymore. Change your Android target to Android 9.0 or replace MonoAndroid90 by MonoAndroid80 in the TargetFrameworks of your projects files.
- 1.43.1 breaking changes rollback to 1.42.0:
ObservableVector<T>
is now internal againTimePicker.Time
andTimePicker.MinuteIncrement
are now back fornetstandard2.0
MediaPlaybackItem.Source
is back as a readonly propertyMediaPlaybackList.Items
is back to anIObservableVector
Bug fixes
- Transforms are now fully functionnal
- [Wasm] Fixed ListView infinite loop when using custom containers
- [Wasm] Use Uno.UI Assembly for namespace type lookup in
XamlReader
- [Wasm] Fixed
System.UriConverter
is being linked out - 145075 [Android] [Wasm] Android and Wasm don't match all specific UWP behaviors for the Image control.
- [Wasm] Don't fail if the dispatcher queue is empty
- 146648 [Android] fixed ListView grouped items corruption on scroll
- [Wasm] Fix
ListView
recycling when theXamlParent
is not available forAutoSuggestBox
- 147405 Fix NRE on some MediaTransportControl controls
- #139 Update Uno.SourceGenerationTasks to improve build performance
- Update
Uno.UI.Toolkit
base UWP sdk to 17763 - [Wasm] Fixes items measured after being removed from their parent appear in the visual tree, on top of every other items.
- [Wasm] Fixes lements may not be removed form the global active DOM elements tracking map
- [Wasm] Disable the root element scrolling (bounce) on touch devices
- Fixed invalid iOS assets folder.
ImageAsset
nodes must not be<Visible>false</Visible>
to be copied to the generated project. - Make CollectionViewSource.View a proper DependencyProperty (#697)
- Fixed support for string support for
Path.Data
(#698) - 150018 Fix nullref in
Pivot
when using native style - 149312 [Android] Added
FeatureConfiguration.NativeListViewBase.RemoveItemAnimator
to remove the ItemAnimator that crashes when under stress - 150156 Fix
ComboBox
not working when usingPopover
. Click
andTapped
events were not working property forButtonBase
on Android and iOS.- 150233 [Android] fixed status-bar, keyboard, nav-bar layout on android
LayoutProvider
exposes theRect
s of status-bar, keyboard, navigation-bar, and anLayoutChanged
event to monitor the changes.
- 150143 [Android] Toggling
TextBox.IsReadOnly
from true to false no longer breaks the cursor
Assets
6
Features
- [Wasm] Improve general performance and memory pressure by removing Javascript interop evaluations.
- Add support for Windows 10 SDK 17763 (1809)
- Improve the Uno.UI solution memory consumption for Android targets
- Add support for GridLength conversion from double
- Raise exceptions on missing styles in debug configuration
- Add working ViewBox stub
Path.Data
property now invalidates measure and arrange- Wasm
Image
logs Opened and Failed events - Add UpToDateCheckInput to avoid VS invalid incremental rebuilds
- 35178 Added recipe for copying text to clipboard
- Added ToogleSwitch documentation in Uno/Doc/Controls.
- Added new properties for ToggleSwitch Default Native Styles.
[iOS] For BindableUISwitch : TintColorBrush property was added to be able to tint the outline of the switch when it is turned off.
[Android] For BindableSwitchCompat : - 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. - Samples apps now contain a Unit Tests page
- Added missing resources for NavigationViewItem
- All Nuget and VSIX artifacts are now Authenticode signed
- Resource strings are now loaded from
upri
files for faster resolution - Add
FeatureConfiguration.Interop.ForceJavascriptInterop
to enable JS Eval fallback in Wasm mode. - Add support for 1809 NavigationView
- Add support for runtime conversion of global static resources unknown at compile time
- Fixed fallback support for Style property set via ThemeResource
- Add support for multiple resw folders with upri resource generation
- Add support for
ThicknessHelper
- ResourceLoader adjustments …
- CurrentUICulture and CurrentCulture are set when setting ResourceLoader .DefaultCulture
- upri load now ignores resources not used by the current culture
- Add BrushConverter support for Color input
- Add SplitView support for PaneOpened and PaneOpening
- Add CoreApplication.GetCurrentView() Dispatcher and TitleBar stubs support
- Add support for IsItemItsOwnContainer iOS ListView
- Add missing Android Sample App symbols font
- Add SampleControl for Samples app for easier browsing and UI Testing of samples
- Import Border samples
- Improve UIElement inner Children enumeration performance and memory usage
- Add
FeatureConfiguration.FrameworkElement.AndroidUseManagedLoadedUnloaded
to control the native or managed propagation performance of Loaded/Unloaded events through the visual tree - Raise Application.UnhandledException event on failed navigation
- Adjusts the
Microsoft.NETCore.UniversalWindowsPlatform
version in the UWP head template to avoid assembly loading issues when using the Uno library template in the sample solution. - [Android] Add support for ListViewItem instances provided via the ItemsSource property
- Added support to disable accessibility feature of larger text on iOS and Android by adjusting the FeatureConfiguration.Font.IgnoreTextScaleFactor flag. Please note that Apple recommends to keep text sizes dynamic for a variety of reasons and to allow users to adjust their text size preferences.
- [Wasm] Code for
Path.Stretch
has been moved toShape
and works well now for all shapes. - Add support for
DynamicObject
data binding, to enable support forElmish.Uno
. - Add support for VS2019 VSIX installation
- Improved Xaml generation speed, and incremental build performance
- [Wasm] Fix
CoreDispatcher
StackOverflowException
when running on low stack space environments (e.g. iOS) - Add support for
ResourceLoader.GetForViewIndependentUse(string)
and named resource files - [Wasm] Load events are now raised directly from managed code. You can restore the previous behavior (raised from native) by setting
FeatureConfiguration.FrameworkElement.WasmUseManagedLoadedUnloaded = false
. - Updated memory profiling documentation
- Updated default app template iOS GC settings
- Add support for WebAssembly Web Projects
- Add support for WebAssembly debugging with Chrome
- Add support for XAML
x:FieldModifier
- Add Uno.UI linker definition files
- Adjust FlyoutPresenter default template
- Add support for Flyout anchor
- Improved XAML designer support
- Improved DependencyObject performance under AOT (JS dynCalls for overrides/delegates inside of EH blocks)
- Add support for MatrixTransform, UIElement.TransformToVisual now returns a MatrixTransform
Breaking changes
- Refactored ToggleSwitch Default Native XAML Styles. (cf. 'NativeDefaultToggleSwitch' styles in Generic.Native.xaml)
[iOS] For BindableUISwitch : Background property was changed for OnTintColorBrush and Foreground property for ThumbTintColorBrush.
[Android] BindableSwitch was renamed BindableSwitchCompat in order to avoid confusion with the Switch control. - Remove invalid Windows.UI.Xaml.Input.VirtualKeyModifiers
- Time picker flyout default styles has been changed to include done and cancel buttons
- DataTemplateSelector implementations are now called using the 2 parameters overload first with a fallback to the 1 parameter overload on null returned value.
Old behavior could be restored usingFeatureConfiguration.DataTemplateSelector.UseLegacyTemplateSelectorOverload = true
. - Using "/n" directly in the XAML for a text/content property is not supported anymore in order to match the UWP behavior.
You can use " " instead in the text/content properties or a carriage return where you need it in the localized resources. - The
ResourcesGeneration
msbuild target has been renamed toUnoResourcesGeneration
If your csproj is using this target explicily, change it to the new name.
Bug fixes
- MediaPlayerElement [iOS] Subtitles are not disable on initial launch anymore
- MediaPlayerElement [Android]Player status is now properly updated on media end
- MediaPlayerElement [Android]Fix issue when video metadata reports a width or height of 0
- #388 Slider: NRE when vertical template is not defined
- 138117 [Android] Removing a bookmarked/downloaded lesson can duplicate the assets of a different lesson.
- [Wasm] Fix VirtualizingPanelAdapter measure and arrange
- 137892 [Android] Fixed FontFamily, FontSize and FontWeight are not applied anymore on the TextBox's content.
- Don't fail on empty grid ArrangeOverride
- Don't generate the Bindable attribute if already present
- Adjust .NET template projects versions to 4.6.1
- Adjust Microsoft.CodeAnalysis versions to avoid restore conflicts
- Fix element name matching existing types fails to compile (e.g. ContentPresenter)
- 138735 [Android] Fixed broken DatePicker
- Multi-selection Check Boxes in ListViewItems are appearing brielfly (#403)
- 140721 [Android] FlipView not visible when navigating back to page
- 138537 [iOS] App freezes after State selection causing infinite load on every subsequent launch
- Fix invalid Border Content type for macOS
- Don't fail iOS ListView if item Content is null
- [Wasm] Implement naive refresh for items manipulation in the ListViewBase
- 3326 [iOS][ItemsControl] ItemsControl in FlipView does not restore items properly
- Fix NRE in Slider when no template is applied
- Fix
Frame
does not unsetPage.Frame
when a page is removed - Add Wasm PlatformNotSupportedException for System.IO after CoreFX merge in mono
- Border properties now invalidates measure and arrange on all platforms
- 141907 [Android] [iOS] The toggle switch is half missing.
- 142937 [Android] [iOS] Some Button ThemeBrushes are missing.
- 143527 [Android] Fixed broken TimePicker Flyout on android devices.
- 143596 [Wasm] Images stretching is incorrect
- 143595 [Wasm] Wasm ListView Resizing is not working - Limitation: items can't change its size yet, but it's now getting measured/arranged correctly.
- 143527 [Android] Fixed broken TimePicker Flyout on android devices.
- 143598 [Wasm] Wasm Animation rotation center is incorrect
- Fixes invalid parsing of custom types containing
{}
in their value (#455) - Add workaround for iOS stackoverflow during initialization.
- Improve the file locking issues of Uno.UI.Tasks MSBuild task
- Fix
VisibleBoundsPadding
memory leak - [ios] Time picker missing "OK" confirmation button
- #87 / 124046 ComboBox incorrect behavior when using Items property
- [Wasm] ComboBox wasn't working anymore since few versions
- Fix memory leak with defining event handlers in XAML documents
- Fix memory leak in
CommandBar
- Fix memory leak when using
x:Name
in XAML documents - 143170 [iOS] [WatermarkedDatePicker] When the Maxyear boundary is reached the first time, the calendar goes back two days instead of one
- #491 DataTemplateSelector.SelectTemplate is not called on iOS and Android. The behavior is now closer to UWP.
- 144268 / #493 : Resources outside of 'en' folder not working
- Support for duplicate XAML
AutomationProperties.Name
ListViewBase.SelectedItems
is updated on selection change in Single selection mode- #528 ComboBoxes are empty when no datacontext
- Ensure that Uno.UI can be used with VS15.8 and earlier (prevent the use of VS15.9 and later String APIs)
- [Android] Listview Items stay visually in a pressed state,(can click multiple) when you click then scroll down, click another item, and scroll back up
- 144101 fixed
ListView
group headers messed up on item update - #527 Fix for
Selector.SelectionChanged
is raised twice on updated selection - [iOS] Add fail-safe on
FrameworkElement.WillMoveToSuperview
log toApplication.Current.UnhandledException
Assets
4
Assets
4
This release is contains a preview of the WebAssembly projects and C# debugger.
See this article for more details on this release.
Assets
4
This new release includes the following major features :
- Add support for NavigationView control (#325)
- [WASM] Support virtualization in ListView (#234)
- Add base infrastructure platform for macOS
- Add support for UIElement.Clip for WebAssembly
- Add BitmapIcon support
And other features:
- Add a behavior so that tap makes controls fade out
- [Android], [iOS] ListViewBase Support MultiSelectStates on ListViewItem. This allows the item container
to visually adapt when multiple selection is enabled or disabled. - Add support for inner-Uno.UI strings localization
- Add stubs for RichTextBlock
- Add support for SymbolIcon control for WebAssembly and iOS
- Add BitmapIcon.ShowAsMonochrome support
- Add support for Windows.Foundation.UniversalApiContract in IsApiContractPresent
- Add support for ContentProperty on UserControl
- Add DelegateCommand
This new release also addresses the following issues :
- [Android] Fixed ImageBrush flash/flickering occurs when transitioning to a new page for the first time.
- [iOS] Fixed bug where stale ScrollIntoView() request could overwrite more recent request
- [iOS] ScrollIntoView() throws exception for ungrouped lists
- [Android] TextBlock.Text isn't visually updated if it changes while device is locked
Fix Android and iOS may fail to break on breakpoints in .xaml.cs if the debugging symbol type is Full in projects
created from templates. - [Android] Path is cut off by a pixel
- [Android] Window bounds incorrect for screen with rounded corners
- [WASM] Text display was chopped on Wasm. (#312)
- WebView No longer raises NavigationFailed and NavigationCompleted events when navigation is cancelled on
iOS. - [Android] Page elements are aligned differently upon back navigation
- [iOS] Image inside Frame doesn't respond to orientation changes
- Fix crash when a VisualState does not have a valid Name
- Adjust compiled binding application ordering when loading controls
- Ensure the SplitView templated parent is propagated properly for FindName
- Fix infinite loop when parsing empty Attached Properties on macOS
- [iOS] Fixed DatePickerSelector not propagating coerced initial value
- [iOS] Navigating to a second local html file with WebView doesn't work.
- CommandBar doesn't take the proper space on iOS phones in landscape
- Image with partial size constraint now display properly under Wasm.
- [iOS][TextBlock] Measurement is always different since we use Math.Ceiling
- [iOS] ListView - fix bug where item view is clipped
- [Android] Incorrect offset when applying RotateTransform to stretched view
- Now supports internal object in desource dictionaries
- CommandBar doesn't take the proper space on iOS phones in landscape
- The explicit property <Style.Setters> does not intialize style setters properly (#26 )
- [Android] ListView shows overscroll effect even when it doesn't need to scroll
- iOS project compilation fails: Can't resolve the reference 'System.Void
Windows.UI.Xaml.Documents.BlockCollection::Add(Windows.UI.Xaml.Documents.Block) (#376 )
As a breaking change, the collapsible button bar is now taken into account by visible bounds calculation.
Apps which use VisibleBoundsPadding or have command bars will therefore see an adjustment to the height of their windows on Android.
View the full change log.
Assets
4
This new release includes a new implementation for the MediaPlayerElement control (#154).
This new release also addresses the following issues :
- [Android] SimpleOrientationSensor calculations was updated based on SensorType.Gravity or based on single angle orientation when the device does not have a Gyroscope.
- [iOS] The Time Picker flyout placement is not always respected.
- [Android] Fixed the loading of ItemsPresenter.
- [iOS] Fixed an issue when back swiping from a page with a collapsed CommandBar.
- [iOS] Setting a different DP from TextBox.TextChanging can cause an infinite 'ping pong' of changing Text values.
- [iOS] MenuFlyout was not loaded correctly, causing templates containing a MenuFlyout to fail.
- [iOS] Image performance improvements.
- [iOS] Fixed ImageBrush flash/flickering occurs when transitioning to a new page.
- [Android] Fix crash in UpdateItemsPanelRoot() in the ItemsControl class.
- [Android] Set the leading edge considering header can push groups out off the screen.
- [Android] Fixed Window bounds set too late.
- [iOS] Improve ListView.ScrollIntoView() when ItemTemplateSelector is set.
- [Android] Content occasionally fails to show because binding throws an exception.
- [Android] Binding MediaPlayerElement.Source causes video to go blank.
- [iOS] ComboBox does not display its Popup.
- [iOS] Ensures the back gesture is enabled and disabled properly when the CommandBar is visible, collapsed, visible with a navigation command and collapsed with a navigation command.
View the full change log.
Uno Release 1.30.1-wasm
jeromelaban released this
Assets
This new experimental release adresses the following issues :
- VSIX solution now targets UWP 16299 to allow for UWP Xaml Edit and Continue to work out of the box
- Some animations after transitions would not execute properly [Android]
- Fix for some RenderTransform origin was incorrectly set [iOS]
- Disable source generation for UWP 16299 and later, where Uno.UI's netstandard2.0 was incorrectly selected (#5)
- Adjust for invalid Xaml markup extension escape sequence
- Adjust hit testing for shapes [Wasm]
Watchers:195 |
Star:4566 |
Fork:392 |
创建时间: 2018-05-07 19:52:27 |
最后Commits: 昨天 |
许可协议:Apache-2.0 |
4e2a248
Compare
WinUI 3.0 Preview 3 is a big step towards shipping the final version of WinUI.
We at Uno Platform team are happy to report that Uno Platform already works with the latest WinUI preview. Our sincerest thanks to WinUI team who keeps us posted on their progress and allows us to make modifications to Uno so that our joint developer base can use the latest and greatest bits right away.
In addition to shipping support for Preview 3 the team also managed to ship additional features in our 7th release in 2020.
WinUI 3 Preview 3 support
We’re aligning the API surface from WinUI 3.0 Previews in Uno, alongside adding support for the WinUI Desktop project template. The Desktop template enables WinUI applications to use the full Win32 and WinRT API with .NET 5, without running in the UWP sandbox.
To create an application using the WinUI 3 API set, run the following command:
This will create a brand-new project to experiment with WinUI 3 Preview 3 and Uno.
You can find up-to-date information about dotnet new templates in our documentation.
A few points about the WinUI 3 Preview support:
Android 11 and iOS 14 Support
Uno is now providing Android 11 support and deprecates the use of Android 9, which Google stopped supporting as of November 1st.
If your application was targeting the API level 28 (Android 9), you can upgrade to Android 10 (Level 29) or 11 (Level 30) in your application’s property pages.
Support for KeyUp and KeyDown Skia backends
Keyboard was a big ask from the community, and the first consumer of this feature is the Uno Calculator for Linux. We’ve updated the Snapped application to enable keyboard support to input numbers and operators.
We've also updated our appimage support for the Linux Calculator, in case you're on a distribution that does not support snap, or snap is not installed.
How to Upgrade
To upgrade to latest release of Uno Platform please update your packages to 3.3 via your Visual Studio NuGet package manager! If you are new to Uno Platform, the best way to get started is following our official getting started guide.
Here's the full changelog:
Features
CoreWindow.[KeyUp|KeyDown]
andUIElement.[KeyUP|KeyDown]
(0e89271)BREAKING CHANGES
This resource dictionary provides the required MapControl style.
Performance Improvements
Bug Fixes