Releases: unoplatform/uno
2.1
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
2.0.528
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.The VSIX is now updated in the marketplace!
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...
XAML Hot Reload Preview 1
Here's the XAML Hot Reload Preview 1 for Uno Platform!
To install this release, please read the following guide.
1.45.0
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 Appl...
1.44.1
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 unoplatform/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
Release 1.43.1
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
1.43.0-dev.657
This release is contains a preview of the WebAssembly projects and C# debugger.
See this article for more details on this release.
Uno.UI Release 1.42
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.
Uno.UI Release 1.41
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.UI Release 1.40
This 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.
The VisualStudio Add-in is available through the marketplace.
Here are some highlights of this release:
- General improvement in the memory consumption of the
ListView
control - Many Wasm rendering and support updates
- Invalid images support
- Text and images measuring fixes
- Add support for AppManifest.displayName
- Support for the
Pivot
control - Support for inline XAML event handlers in
DataTemplate
- Support for implicit styles in the
XamlReader
- Support for
ThreadPoolTimer
- Add support for implicit
bool
toVisibility
conversion - Support for
AutoSuggestBox
- SourceLink, Reference Assemblies and deterministic builds are enabled
- Support for
x:Name
reference inx:Bind
markup - Support for
WriteableBitmap
for all platforms - Added support for
Cross-platform Library
template in vsix - Added support for
StaticResource
as top levelResourceDictionary
element - Added support for
AutomationPeer
- Android status bar height is now included in
Window.Bounds
- Add support for
Underline
inHyperLinkButton
- Add support for TextBlock.TextDecorations
- TextBlock base class is now
FrameworkElement
on iOS, instead ofUILabel
- Auto generated list of views implemented in Uno in the documentation
- Add support for string to
Type
conversion in XAML generator and binding engine - Support for Attached Properties localization
- Added
ItemsControl.OnItemsChanged
support - Added support for ListView GroupStyle.HeaderTemplateSelector for iOS/Android
View the full change log.