From WinForms to Xamarin: One Developer's Journey | Syncfusion Blogs
Live Chat Icon For mobile
Live Chat Icon
Popular Categories.NET  (182).NET Core  (28).NET MAUI  (233)Angular  (117)ASP.NET  (49)ASP.NET Core  (81)ASP.NET MVC  (87)Azure  (42)Black Friday Deal  (1)Blazor  (244)BoldSign  (15)DocIO  (24)Essential JS 2  (110)Essential Studio  (201)File Formats  (74)Flutter  (140)JavaScript  (227)Microsoft  (122)PDF  (86)Python  (1)React  (107)Streamlit  (1)Succinctly series  (131)Syncfusion  (993)TypeScript  (33)Uno Platform  (3)UWP  (3)Vue  (46)Webinar  (53)Windows Forms  (59)WinUI  (72)WPF  (165)Xamarin  (159)XlsIO  (38)Other CategoriesBarcode  (5)BI  (29)Bold BI  (8)Bold Reports  (2)Build conference  (11)Business intelligence  (55)Button  (4)C#  (164)Chart  (154)Chart of the week  (62)Cloud  (16)Company  (440)Dashboard  (8)Data Science  (3)Data Validation  (8)DataGrid  (74)Development  (694)Doc  (8)DockingManager  (1)eBook  (99)Enterprise  (22)Entity Framework  (7)Essential Tools  (13)Excel  (43)Extensions  (31)File Manager  (8)Gantt  (23)Gauge  (12)Git  (5)Grid  (31)HTML  (13)Installer  (2)Knockout  (2)Language  (1)LINQPad  (1)Linux  (2)M-Commerce  (1)Metro Studio  (11)Mobile  (530)Mobile MVC  (9)OLAP server  (2)Open source  (1)Orubase  (12)Partners  (21)PDF viewer  (48)Performance  (13)PHP  (2)PivotGrid  (5)Predictive Analytics  (6)Report Server  (3)Reporting  (8)Reporting / Back Office  (9)Rich Text Editor  (12)Road Map  (12)Scheduler  (54)Security  (5)SfDataGrid  (9)Silverlight  (21)Sneak Peek  (32)Solution Services  (4)Spreadsheet  (11)SQL  (15)Stock Chart  (1)Surface  (4)Tablets  (5)Theme  (12)Tips and Tricks  (112)UI  (426)Uncategorized  (68)Unix  (2)User interface  (68)Visual State Manager  (2)Visual Studio  (31)Visual Studio Code  (19)Web  (648)What's new  (354)Windows 8  (19)Windows App  (2)Windows Phone  (15)Windows Phone 7  (9)WinRT  (26)

From WinForms to Xamarin: One Developer’s Journey

The following guest blog was written by Joth Pigott of Limited. 

Our company, Limited develops and distributes Backstage, a business application for managing all aspects of a professional classical orchestra from event management to projecting their annual budget. The Backstage database has over 1,000 discrete fields, and the budget projection reports are processor intensive since the payments to each musician for each day are dependent on many factors.


Backstage has taken over 10 years to develop and is written in C# on the WinForms platform. It also populates a summary ‘web-app’ optimized for mobiles and tablets written in Javascript. We wrote Backstage as a desktop application rather than an internet/browser based system due to the processor intensive reports and complex interfaces which, 10 years ago, we judged would have loaded too slowly. About 3 years ago we started to actively look at porting Backstage to a new platform. Our principal concern was the feeling that the mobile operating systems (Android, iOs, and UWP) were the platforms of the future and if Backstage couldn’t fully run on them, we may start to struggle to retain our existing customers as well as attract new ones.

We were still reluctant to port Backstage to a browser based solution such as ASP.NET in case it still performed poorly and so were ideally looking at another desktop/app platform. We’ve known of Xamarin and about Mono for many years, but prior to the Microsoft take-over, had read some reports making us uncertain about their future given that we would become totally dependent on their success. Since our company is too small to consider developing multiple native apps in C#, Java, Swift, we experimented heavily with one of the JavaScript/hybrid platforms. However, it was really daunting as it became more and more clear how much work would be involved in porting such a large application to a new language and the real difficulty of then maintaining two solutions until the new one was completed. Then suddenly decisions became very easy when Microsoft announced it was buying Xamarin. Xamarin appeared to tick every box.  We decided to build a Xamarin.Forms application using a Portable Class Library (PCL) and, due to the limitations of the PCL compared to the full .NET Framework, we would re-write existing functions in the WinForms Backstage where necessary to work with the PCL so as much of the code-base as possible could be shared.

The next issue was deciding on a component vendor. Key components of Backstage are a powerful scheduler as well as heavy integration with Microsoft Office products – particularly Excel. This choice was in fact very easy in that, at the time of looking, Syncfusion were the only Xamarin partner to offer a scheduler. We then found we qualified for their free community license! This seemed too good to be true, although we were nervous about what level of support would actually be offered to free customers. However, we found their forums and online documentation extensive and had absolutely no reason not to give them a go.

The Syncfusion Community License Offers full support to qualifying developers.

We have in fact had to make considerable use of their support which has proved excellent. WinForms is a very mature product that has a large repertoire of complex controls that are very quick to work with due to the excellent visual designer in Visual Studio. Working with Xamarin and XAML is a very different experience with a considerable learning curve. We’ve visited a number of developer conferences and know we are not the only ones to experience that. Getting code to compile on the various platforms was initially very frustrating. However, once you’ve learned where everything sits and what the various compile errors actually mean, it becomes very useable.

Xamarin Forms is also very spartan compared to WinForms due to the limitations of the common controls on all the various platforms. For example, it lacks a checkbox or multi-select dropdown which we make heavy use of in WinForms. However, there are workarounds – you just have to be a bit more creative.  For example, we built our own multi-select control based on the Syncfusion SfNavigationDrawer and SfListView. In the scheduler, we also wanted a ‘status bar’ on each event, which the Syncfusion SfScheduler doesn’t offer out of the box.  However, their free community support returned to us in under 24 hours a project showing us how to enhance the scheduler to show the status of an event.

As for now, we’ve got many months ahead of porting the code across. Howeve,r it’s a great feeling to believe that you’ve chosen the very best tools for the job combined with the knowledge that every year they will get better and more fully featured together with mobiles and tablets getting even more powerful. Many thanks to Microsoft, Xamarin, and Syncfusion!


Share this post:

Comments (1)

What a material of un-ambiguity and preserveness of precious experience on the topic of unpredicted feelings.

Comments are closed.

Popular Now

Be the first to get updates

Subscribe RSS feed