Xamarin
What's New in ComponentOne Studio for Xamarin, July 2018
Get the new release
We’re excited to announce the release of ComponentOne Studio for Xamarin 2018 v3, which includes many enhancements to the suite. FlexGrid and FlexChart are both being substantially improved, we have a major new sample, and many quality-of-life improvements will enhance your Xamarin experience.
MyBI Sample
MyBI is a dashboard application for mobile devices and Xamarin.Forms modeled after current mobile design trends. It uses Gauges, FlexChart, and FlexGrid to summarize sales data, and is built utilizing our new Material Design appearance for FlexGrid.
Get from the Windows Store | Get from the Google Store | Read the blog on the MyBI app.
Material Design theme added to Xamarin FlexGrid
The look and feel of a UI is very important on mobile, and we’re interested in supporting the newest design trends for our Xamarin controls. Google’s Material Design pattern produces a simple, beautiful mobile UI, and we’ve done a lot of work to have FlexGrid truly embrace its look and feel.
We’re adding many new properties for FlexGrid:
- Configure gridlines, icons and icon position using C1Icon
- A new Checklist selection mode and behavior, which allows you to make non-contiguous selection (much like the ListBox mode found on other platforms) while following a well-understood mobile UI pattern. The ClassicStyle is also available for those who prefer the old appearance.
- Support for multi-column sorting
C1Icon: Custom Icons for Xamarin FlexGrid
C1Icon is a new abstract class that makes it easy to customize all of the icons in FlexGrid using images, fonts, or even vector data on platforms that support it. The following icons now have templates that can be configured using C1Icon.
- SortAscendingIconTemplate
- SordingDescendingIconTemplate
- GroupExpandedIconTemplate
- GroupCollapsedIconTemplate
- EditIconTemplate
- NewRowIconTemplate
- DetailCollapsedIconTemplate
- DetailExpandedIconTemplate
You can select from built-in templates for triangles, arrows, and chevrons, and you can easily use other objects that best suit your FlexGrid. Configuring the icons is quite easy:
XAML
<c1:FlexGrid x:Name="grid" SortIconPosition="Left" Grid.Row="2">
<c1:FlexGrid.SortAscendingIconTemplate>
<core:C1IconTemplate>
<DataTemplate>
<core:C1FontIcon Text="↑" Color="#c47a85"/>
</DataTemplate>
</core:C1IconTemplate>
</c1:FlexGrid.SortAscendingIconTemplate>
</c1:FlexGrid>
C#
grid.SortAscendingIconTemplate = C1IconTemplate.Triangle;
grid.SortAscendingIconTemplate= new C1IconTemplate(() => { return new C1FontIcon(); });
Updates to Xamarin Input Controls
The appearance of FullScreenMode has been improved by making the appearance closer to that of the UISearchController on iOS. This should make the Input controls look and feel much better:
We’ve also added new properties for configuring the colors of the new appearace through CloseButtonTextColor and CloseButtonBackgroundColor (CloseButtonForeground and CloseButtonBackground on UWP).
Updates to Xamarin FlexChart
We’ve added two new chart types, including StepCharts and TreeMap.
In addition, other new features make it easier to handle overlapping data labels. These include:
- Auto arrangement
- Rhe ability to hide overlapping labels
- Rotate data labels
- Trim or wrap content inside of them
On small phone screens, these new functions can make a huge difference in readability.
C#
//Auto-position DataLabels
flexChart.DataLabel.Position = ChartLabelPosition.Auto;
//Hide overlapping DataLabels
flexChart.DataLabel.Overlapping = ChartLabelOverlapping.Hide;
//Rotate DataLabels
flexChart.DataLabel.Angle = 45;
//Trim DataLabels based on max width
flexChart.DataLabel.MaxWidth = 35;
flexChart.DataLabel.ContentOptions = ContentOptions.Trim;
FlexPie also has new position options for data labels including circular and radial positioning:
Other Enhancements to Xamarin controls
FlexGrid fixed a potential memory leak issue on iOS
CollectionView fixed a limitation in C1GroupCollectionView where the “Clear” notification was raised after editing items
C1Input fixed a potential memory leak issue on iOS
Full release notes below:
2018 v3 Change Log
General
Improvements
- Added MyBI sample project.
Core
Bug fixes
- [X.Android] Fixed an issue where Java.lang.NullPointer Exception Box is shown and control does not render at Designer File at VS17 version 15.7.6.
- [X.Android] C1Border layout was now works when setting BorderAlignment=Inner.
- [X.Android] ObjectDisposedException no longer occurs when check/uncheck checkbox in merged column with boolean datatype after apply sorting.
- _ [X.iOS]_ C1Border reimplemented to reduce layers blending.
- [XF] Frame was not rendering correctly for UWP.
Calendar
Bug fixes
- [X.iOS] Fixed a potential memory leak on iOS platform.
CollectionView
Improvements
- CollectionView is now be usable with Windows Forms projects and is used by C1DataFilter on that platform.
- [Windows Forms] Added support for filtering the C1BindingListCollectionView with the Equal filter operator using DBNull.Value or null.
- [Windows Forms] Added support for the DateTime type when filtering the C1BindingListCollectionView.
- GroupCollectionView will not notify as Reset/Refresh with any change from source anymore. It will raise corresponding notification.
Bug fixes
- [Windows Forms] Filtering the C1BindingListCollectionView didn't work with the FullDateTimePattern format of DateTime value.
- [Windows Forms] Filtering the C1BindingListCollectionView didn't work when the CultureInfo of the application was different from the InvariantCulture.
FlexChart
Improvements
- Added FlexChart and FlexPie data label auto arrange functions.
- Added Step, StepArea, StepSymbols, and TreeMap chart types for FlexChart.
- Added TreeMap sample for FlexChart101.
Bug Fixes
- _ [XF]_ Fixed an ArgumentOutOfRangeException that occurred when removing a series (customized within SymbolRendering event) from Stacked chart type with setting UpdateAnimation.
- [XF][X.iOS][X.Android] Fixed an issue where border lines of data lable are still displayed even though DataLabel Border is set FALSE and StrokeThickeness is set zero.
- [XF] 'An unhandled win32 exception' occured on tapping data points with 'Point' SelectionMode if symbols are customized within SymbolRendering event on UWP.
- [XF] Fixed a situation where System.Debugger.Break() is called and the application stops at about 30 seconds after loading Dynamic chart on UWP.
- [X.Android] Fixed a System.ArgumentNullException that could occur if control's Binding property is not set.
- [XF][X.iOS][X.Android] Fixed an issue where the update animation doesn't work when updating the Chart by Adding or Removing chart values.
- [X.iOS][X.Android][XF] Fixed a System.NullReferenceException that occurred if e.PlotElement property setting within SymbolRendered event.
- [XF] Data points of Scatter chart are now render if chart is bound with single series on UWP.
- [XF] DataLabels no longer get clipped when renders against the plot area boundaries in all DataLabel Positions.
- [XF] Symbol of scatter chart is displayed out of plot area if chart is bound on single series with single data point.
- [XF][X.iOS][X.Android] Axis labels are shown inside plot area when setting AxisX/Y LabelAngle.
- [XF] LineMarker's Label Content should correctly be shown on iOS.
- [XF] Application has no longer exited with code 0 if setting LineMarker on NullDataSource Histogram chart on UWP.
- [XF] ArgumentNullException occurs when Axis X/Y LabelLoading events are called without setting e.Label value.
- [XF] ArgumentNullException occurs when SymbolLoading event is called without setting e.PlotElement.Content.
- [X.iOS][X.Android] Control's properties set form Property window will now take effect on runtime.
- [XF] System.NullReferenceException no longer occurs if e.PlotElement property setting within SymbolRendered event.
FlexGrid
Improvements
- BorderWidth will overrides borders of the cells on the boundary.
- [Android] Added FlexGridClassicStyle style.
- [iOS] Style (Default, Classic) property added.
- Material style applied to FlexGrid. Use ClassicStyle to make FlexGrid look as before.
- Adjusted dynamic auto-scroll speed when dragging columns and rows.
- CheckListBehavior added to allow FlexGrid rows to be selected through checkboxes.
- Sorting was changed to have three states (Asc, Desc, None), this way the sorting can be reverted through the user interface.
- Multi-column sort added.
- ColumnHeaderGridLinesVisibility, RowHeaderGridLinesVisibility and TopLeftHeaderGridLinesVisibility properties added.
- DefaultColumnWidth and DefaultRowHeaderColumnWidth property added.
- SortIconPosition, SortAscendingIconTemplate and SortDescendingIconTemplate properties added.
- GroupExpandedIconTemplate and GroupCollapsedIconTemplate properties added.
- FlexGridDetailProvider.DetailExpandedIconTemplate and DetailCollapsedIconTemplate properties added.
- EditIconTemplate property added.
- NewRowIconTemplate property added.
Breaking Changes
- HeadersGridLinesVisibility is no longer supported, use ColumnHeaderGridLinesVisibility, RowHeaderGridLinesVisibility or TopLeftHeaderGridLinesVisibility instead.
- DefaultColumnHeadersRowHeight renamed to DefaultColumnHeaderRowHeight.
- GridRow.Height type changed from Nullable
to GridLength.
Bug Fixes
- [XF] SelectionChanged event no longer fires when navigate back to previous page after any cell is selected.
- [X.Android] Merged custom cell value are now shown in CustomMerging page.
- [XF][X.iOS][X.Android] Fixed layout of column header cells.
- [XF] System.ObjectDisposedException occurs when clicking on the remaining SelectionMenu after navigating back to Home page on Android.
- [XF][X.iOS][X.Android] ArgumentOutOfRangeException occurs after all checkboxes in one group are checked/unchecked quickly in multiple level grouped FlexGrid.
- [X.iOS] Dragging columns and rows rendering issue fixed.
- Changed column headers row so it allows merging by default when AllowMerging=ColumnHeader.
- Changed default FrozenLinesColor to inherit GridLinesColor by default and fixed ClassicStyle to look like Excel.
- [XF] System.Diagnostics.Debugger.Break() is no longer called when clicking on Filter Button without exiting from Editmode in Filter Page on UWP.
- [X.iOS] Fixed an issue where layout did not display correctly when displaying grid inside auto-sized panel and when using auto-sized columns.
- [XF] Sort icon can now be changed to 'None' state when tap over sort icon on Android.
- [XF][X.iOS][X.Android] Collapsed groups are no longer expanded after editing cell in one expanded group is completed.
- [XF][X.iOS][X.Android] Fixed an issue where FullTextFilterBehavior was not filtering the text set in the FilterEntry when attached.
- [X.iOS] Fixed a potential memory leak on iOS platform.
- [X.Android] [Android Designer] Setting AlternatingRowTextColor from property grid does not work.
- [X.Android] [Android Designer] FlexGrid's fontFamily now take effect on design/runtime if setting from properties window.
- [X.Android] [Android Designer] Inappropriate xaml tags are no longer shown for FlexGrid's borderColor property in description portion of properties window.
- [XF] Avoids aliasing issue by rounding the width of the star columns on UWP.
Input
Improvements
- Improved the appearance of FullScreenMode on iOS.
- Add CloseButtonTextColor/CloseButtonBackgroundColor Properties for C1DropDown on XF/iOS/Android.
- Add CloseButtonForeground/CloseButtonBackground Properties for C1DropDown on UWP.
Bug Fixes
- [XF] System.NullReferenceException no longer thrown when navigate back to home page after selecting items from Dynamic AutoComplete on iOS.
- [XF] Dropdown no longer opens when the alphabet [i.e: unmatched text] is entered into the header portion of control that is bound with Int number.
- [XF] Set HorizontalTextAlignment does now applies Placeholder text on iOS and UWP.
- [XF][X.iOS][X.Android] Both CloseButton types 'Cancel' and 'CrossButton' are shown in Editable controls at FullScreenMode.
- [XF][X.iOS] Close Button does not shown in Calendar Dropdown if ShowCloseButton is not set to True in iPad Simulator/Device.
- [XF] Color property of CheckBox does not work in Android and UWP.
- [XF] Foundation.MonoTouchException thrown when navigate back to previous page after navigating Dropdown Page on iOS.
- [XF] PromptCharacters are no longer encrypted as Password format when set IsPassword to True and Mask property is set in MaskedInput.
- [XF] Drop down list now correctly disappears when changing visibility to hide control at run time.
- [X.iOS] Fixed a potential memory leak on iOS platform.
- [Xamarin.Forms] AutoComplete’s Dropdown now correctly repopulatse full list after clear is pressed on iOS.
- [XF][X.iOS] CloseButton('Cancel') is shown in FullScreenMode when set IsEditable to False in control on iOS.
- [XF] ShowClose Button can be shown in all DropdownMode of nonEditable control if changed DropdownMode at Runtime on Android and UWP.
- [XF] [Autocomplete] DropDown incorrectly positioned when set to ForceAbove and inside ScrollView on iOS
- [XF] MaskedText Text value (prompt character) can now retrieved when Text value is getting without setting any value on iOS.
- [XF][X.iOS] System.InvalidOperationException no longer thrown when tap on header portion of controls in Force Above/Below Mode on iOS.
- [XF] 'IsPassword'property now works in MaskedInput control even set to true.
- [X.Android] Setting DropDownDirection from property grid does now takes effect when set from designer.
- [XF][X.iOS] [Combobox]ArgumentNullException no longer occurs if press Return key(from hardware keyboard) after typing input while ItemSource set to Null on iOS.
- [XF][X.Android] Java.Lang.NoSuchMethodError Exception no longer thrown when run Input control on Android API 17 and API 19 on ANdroid.
- [XF] ForceAbove DropdownMode does now takes effect on LocalMachine on UWP.
Key: [XF] = Xamarin.Forms, [X.Android] = Xamarin.Android, [X.iOS] = Xamarin.iOS, [X.Mac] = Xamarin.Mac, [Windows Forms] = Windows Forms