{"id":30966,"date":"2017-04-18T11:39:15","date_gmt":"2017-04-18T18:39:15","guid":{"rendered":"https:\/\/blog.xamarin.com\/?p=30966"},"modified":"2017-04-18T11:39:15","modified_gmt":"2017-04-18T18:39:15","slug":"adding-calendar-xamarin-forms-apps-telerik-calendar","status":"publish","type":"post","link":"https:\/\/devblogs.microsoft.com\/xamarin\/adding-calendar-xamarin-forms-apps-telerik-calendar\/","title":{"rendered":"Guest Post: Adding a Calendar to Your Xamarin.Forms Apps with the Telerik Calendar"},"content":{"rendered":"<p>\t\t\t\t<em>This is a special guest post from the Progress team at Telerik, the makers of the Telerik UI suites. Speaking on behalf of these awesome engineers of developer tooling is Sam Basu, a Developer Advocate for Telerik products and Xamarin aficionado. You may find him on Twitter as <a href=\"https:\/\/twitter.com\/samidip\" target=\"_blank\"><em>@samidip<\/em><\/a>.<\/em><\/p>\n<p><img decoding=\"async\" src=\"https:\/\/devblogs.microsoft.com\/wp-content\/uploads\/sites\/44\/2019\/03\/CalendarExample.gif\" alt=\"Celendar in action gif\" width=\"175\" height=\"358\" class=\"alignright size-full wp-image-30975\" \/><\/p>\n<p>Are you already building cross-platform native mobile apps using Xamarin.Forms? If so, great job picking your technology stack! After all, where else could you reuse your skills in C#\/XAML to make apps that run on every platform with a truly unified single codebase? While Xamarin provides a vast array of frameworks, IDEs, and integrations, apps may sill need controls outside of those included in Xamarin.Forms. Rather than building your own custom control, developers may prefer to grab a well-engineered, performant UI control out-of-the-box from a service such as Telerik to help ship apps faster. Think of a polished UI as your must-have &#8220;wow&#8221; factor; that&#8217;s what you&#8217;ll get with <a href=\"http:\/\/www.telerik.com\/xamarin-ui\" target=\"_blank\">Telerik UI for Xamarin<\/a>.<\/p>\n<p>Calendars keep our lives organized and productive; everyone uses them and increasingly so in digitally, so it&#8217;s no surprise that your mobile app may need to display a calendar and manage events. Turns out, however, calendar UI is tricky business, and the little details make all the difference.<\/p>\n<p>The <a href=\"http:\/\/www.telerik.com\/xamarin-ui\/calendar\" target=\"_blank\">Telerik Calendar<\/a> in UI for Xamarin is designed so you can offer your users the ultimate in productivity in your apps with various calendar scenarios. Yes, these are truly native calendars on every mobile platform, simply rendered through the Xamarin.Forms abstraction. The Telerik Calendar not only capitalizes on all of the innate benefits provided by native UI, it also exposes properties\/events in C# to allow developers full customization and flexibility. This post introduces Telerik UI for Xamarin and then dives head first into leveraging the Telerik Calendar to explore all of the available customization options for developers.<\/p>\n<h2>Telerik UI for Xamarin<\/h2>\n<p>Telerik UI for Xamarin is a collection of Xamarin.Forms controls and Xamarin bindings built on top of the native Telerik UI for iOS and UI for Android suites. The Xamarin.Forms controls also utilize controls and features from the Telerik UI for UWP, providing a common API that allows the developer to use the native Telerik components on all three mobile platforms (iOS \/ Android \/ Windows) using a single shared code base. UI for Xamarin provides rich and performant UI controls out-of-the-box, so that you can focus on delivering app features using functional UI components.<\/p>\n<p>We know developers don&#8217;t always trust high-octane words, though, right? You can play around with the Telerik UI for Xamarin suite yourself and see if it fits your needs. You&#8217;re able to check out the performance and interactivity of each of the controls before deciding if it&#8217;s right for your Xamarin app. There are beautiful showcase apps that highlight UI for Xamarin controls for each mobile platform, along with the sample code to achieve the same results. Find the apps in respective app stores, including the <a href=\"https:\/\/itunes.apple.com\/dm\/app\/telerik-ui-for-xamarin-examples\/id1083924868?mt=8\" target=\"_blank\">iOS App Store<\/a> and <a href=\"https:\/\/play.google.com\/store\/apps\/details?id=com.telerik.xamarin\" target=\"_blank\">Google Play<\/a>.<\/p>\n<h2>Getting Started <\/h2>\n<p>So, how do you incorporate Telerik UI for Xamarin in your Xamarin project? A simple trial download may be the easiest way to get started. Simply head to the <a href=\"http:\/\/www.telerik.com\/download\/xamarin-ui\" target=\"_blank\">download site<\/a> and pull down the bits. Once downloaded, you&#8217;ll find examples, templates, and binaries specific to each platform as swell as shared ones. <\/p>\n<p>If you have the luxury of starting work on greenfield projects, Telerik UI for Xamarin offers several handy project templates\/wizards. The goal is to give developers a great starting point with their Xamarin projects, both on <a href=\"http:\/\/docs.telerik.com\/devtools\/xamarin\/installation-and-deployment\/windows\/project-wizard\" target=\"_blank\">Visual Studio<\/a> and <a href=\"http:\/\/docs.telerik.com\/devtools\/xamarin\/installation-and-deployment\/mac\/project-wizard\" target=\"_blank\">Xamarin Studio<\/a>.<\/p>\n<p>Be it on Windows or Mac, one of the easiest way for developers to integrate UI for Xamarin in their Xamarin projects is the Telerik NuGet Server. The first step is to configure your IDE&#8217;s Package Manager to point to the Telerik NuGet feed. This is in your <em>Preferences\/Options<\/em> and works the same way in Visual Studio and Xamarin Studio. Simply set up a new NuGet source to point to the Telerik gallery at <code>https:\/\/nuget.telerik.com\/nuget<\/code>, authenticate yourself for the first time, and done!<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/devblogs.microsoft.com\/wp-content\/uploads\/sites\/44\/2019\/03\/TelerikNuGetSourceVS.jpg\" alt=\"Adding the Telerik NuGet source in Visual Studio.\" width=\"375\" height=\"251\" class=\"aligncenter size-full wp-image-30967\" \/><\/p>\n<p>Here&#8217;s how you use NuGet to pull in UI for Xamarin bits into an existing project, shown here for Xamarin Studio for brevity, though Visual Studio has the same workflow. Once you pull in the Telerik UI for Xamarin package, NuGet does the rest of the magic; you&#8217;ll have the required UI for Xamarin references in your shared PCL as well as all the platform specific projects. One big advantage of the NuGet route is that not only do you get an easy way to pull in UI for Xamarin references into your existing project, you also get easy updates too.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/devblogs.microsoft.com\/wp-content\/uploads\/sites\/44\/2019\/03\/TelerikNuGetPkg.jpg\" alt=\"Add the Telerik NuGet package.\" width=\"375\" height=\"248\" class=\"aligncenter size-full wp-image-30968\" \/><\/p>\n<p>Several of the UI for Xamarin controls gain their polish, behavior, and performance from the fact that they are truly native UI controls customizable for each platform. Accordingly, to render them from a Xamarin.Forms abstraction requires <a href=\"https:\/\/developer.xamarin.com\/guides\/xamarin-forms\/application-fundamentals\/custom-renderer\/\" target=\"_blank\">custom renderers<\/a>. No worries, though, everything comes ready out-of-the-box, you just need to register the renderers in your app. The <a href=\"http:\/\/docs.telerik.com\/devtools\/xamarin\/\" target=\"_blank\">docs<\/a> will show you how to register the renderers for each control when using them on iOS, Android, and UWP platforms. Here&#8217;s a sample of what you need when using the Telerik Calendar control in iOS apps. The following code goes in the <code>AppDelegate.cs<\/code> file in your iOS-specific project:<\/p>\n<pre class=\"theme:vs2012 lang:cs decode:true\">\nusing System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing Foundation;\nusing Xamarin.Forms;\n\t    \n[assembly: ExportRenderer(typeof(Telerik.XamarinForms.Input.RadCalendar), typeof(Telerik.XamarinForms.InputRenderer.iOS.CalendarRenderer))]\n\t    \nnamespace MyApp.iOS\n{\n    [Register(\"AppDelegate\")]\n    public partial class AppDelegate : global::Xamarin.Forms.Platform.iOS.FormsApplicationDelegate\n    {\n        public override bool FinishedLaunching(UIApplication app, NSDictionary options)\n        {\n            global::Xamarin.Forms.Forms.Init();\n\t    \n            Telerik.XamarinForms.Common.iOS.TelerikForms.Init();\n            LoadApplication(new App());\n\t    \n            return base.FinishedLaunching(app, options);\n        }\n    }\n}\n<\/pre>\n<p>Once you have all of the bits referenced and renderers registered, you&#8217;re ready to roll with the Telerik Calendar control. Fire up any XAML view and this simple markup renders the Calendar for you:<\/p>\n<pre class=\"theme:vs2012 lang:xml decode:true\">\n\t... xmlns:TelerikInput=\"clr-namespace:Telerik.XamarinForms.Input;assembly=Telerik.XamarinForms.Input\" ...\n\t\n\n<\/pre>\n<h2>Calendar Visual Structure<\/h2>\n<p>The Telerik Calendar control is a calendar for sure, just rendered with painstaking accuracy for your app with a many customization options and catered to the unique UI paradigms of each mobile platform. Before we start tweaking things, it helps to see the overall, big-picture control&mdash;the simple rendering of the Telerik Calendar with all visual elements explained. The labels should be self-explanatory:<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/devblogs.microsoft.com\/wp-content\/uploads\/sites\/44\/2019\/03\/VisualStructure.png\" alt=\"Telerik Calendar control UI.\" width=\"315\" height=\"334\" class=\"aligncenter size-full wp-image-30971\" \/><\/p>\n<p>You also get some control to show or hide specific details to suit your needs. By default, the day names show up and the week numbers don&#8217;t, but here&#8217;s some code to flip both (along with the resulting calendar on each mobile platform):<\/p>\n<pre class=\"theme:vs2012 lang:cs decode:true\">\nvar calendar = new RadCalendar();\ncalendar.WeekNumbersDisplayMode = DisplayMode.Show;\ncalendar.DayNamesDisplayMode = DisplayMode.Hide;\n<\/pre>\n<p><img decoding=\"async\" src=\"https:\/\/devblogs.microsoft.com\/wp-content\/uploads\/sites\/44\/2019\/03\/AlteredVisualSturcture.png\" alt=\"Telerik Camera control visual structure.\" width=\"656\" height=\"334.66\" class=\"aligncenter size-full wp-image-30972\" \/><\/p>\n<h2>Calendar ViewMode<\/h2>\n<p>The Telerik Calendar has several supported *View Modes* that control how the calendar is initially rendered, namely:<\/p>\n<ul>\n<li><code>Month<\/code><\/li>\n<li><code>Week<\/code><\/li>\n<li><code>Year<\/code><\/li>\n<li><code>MonthNames<\/code><\/li>\n<li><code>YearNumbers<\/code><\/li>\n<li><code>Flow<\/code><\/li>\n<\/ul>\n<p>Not every view mode is supported on all mobile platforms, with only iOS having the distinction of supporting them all. There are some methods exposed for changing up view modes programmatically, aside from via user action. Each of these return true if there is support or if navigation is possible, otherwise they return false:<\/p>\n<ul>\n<li><code>TrySetViewMode<\/code>: Sets the Calendar to a specific view mode<\/li>\n<li><code>TryNavigateToUpperView<\/code>: Navigates calendar to upper view if possible<\/li>\n<li><code>TryNavigateToLowerView<\/code>: Navigates calendar to lower view if possible<\/li>\n<\/ul>\n<p>The hierarchy of navigation among view levels is mobile platform-dependent, like so:<\/p>\n<ul>\n<li>iOS: <code>YearNumbers<\/code> &gt; <code>Year<\/code> &gt; <code>MonthNames<\/code> &gt; <code>Month<\/code> &gt; <code>Week<\/code><\/li>\n<li>Android: <code>Year<\/code> &gt; <code>Month<\/code> &gt; <code>Week<\/code><\/li>\n<\/ul>\n<p>Here&#8217;s some simple code to instantiate a calendar and set the view mode to year, all programmatically:<\/p>\n<pre class=\"theme:vs2012 lang:cs decode:true\">\nvar calendar = new RadCalendar();\ncalendar.NativeControlLoaded += CalendarLoaded;\n\t\nprivate void CalendarLoaded(object sender, EventArgs args)\n{\n    (sender as RadCalendar).TrySetViewMode(CalendarViewMode.Year);\n}\n<\/pre>\n<h2>Calendar Date Management<\/h2>\n<p>The Telerik Calendar exposes some properties that allow the developer programmatic flexibility to manipulate the calendar user experience:<\/p>\n<ul>\n<li><code>DisplayDate<\/code>: A date in the current view<\/li>\n<li><code>MinDate<\/code>: Gets\/Sets the minimum date that could be displayed or selected<\/li>\n<li><code>MaxDate<\/code>: Gets\/Sets the maximum date that could be displayed or selected<\/li>\n<\/ul>\n<p>Each of the date properties can be set explicitly or relative to the current date, like so:<\/p>\n<pre class=\"theme:vs2012 lang:cs decode:true\">\n\/\/ XAML Markup\nxmlns:TelerikInput=\"clr-namespace:Telerik.XamarinForms.Input;assembly=Telerik.XamarinForms.Input\"\n\t\n\n\n\/\/ Code Behind\nMyCalendar.MinDate = DateTime.Today.AddMonths(-1);\nMyCalendar.MaxDate = DateTime.Today.AddMonths(5);\nMyCalendar.DisplayDate = DateTime.Today.AddMonths(2);   \n<\/pre>\n<p>What do users want to do most from a Calendar? The ability to select dates, of course. The Telerik Calendar sports a simple date selection functionality, both through user interaction and programmatically. Date selections should be available as single, multiple, or a range of dates. Two key things make this possible:<\/p>\n<ul>\n<li><code>SelectedDate<\/code>: Gets\/Sets currently selected date<\/li>\n<li><code>SelectionChanged<\/code>: Event raised when the selected date is changed<\/li>\n<\/ul>\n<p>Here&#8217;s some code that sets up the calendar to display the default month view mode and selects a date programmatically:<\/p>\n<pre class=\"theme:vs2012 lang:cs decode:true\">\nRadCalendar calendar = new RadCalendar();\ncalendar.SelectedDate = new DateTime(2016, 12, 14);\n<\/pre>\n<p>Below is the result; notice the style differences in the calendar controls rendered across different mobile platforms.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/devblogs.microsoft.com\/wp-content\/uploads\/sites\/44\/2019\/03\/DateSelection.png\" alt=\"Telerik Camera control date selection.\" width=\"656\" height=\"334.66\" class=\"aligncenter size-full wp-image-30973\" \/><\/p>\n<h2>Calendar Appointments<\/h2>\n<p>Any calendar UI needs to display appointments, it&#8217;s how you keep users engaged and productive. Appointment support in the Telerik Calendar begins with the <code>Telerik.XamarinForms.IAppointment<\/code> interface, which sports three basic members: <code>StartDate<\/code>, <code>EndDate<\/code>, and <code>Title<\/code>, but you should definitely consider adding more descriptors to your appointments as needed. A sample <code>Appointment<\/code> class implementing the interface is below:<\/p>\n<pre class=\"theme:vs2012 lang:cs decode:true\">\npublic class Appointment : IAppointment\n{\n    public DateTime StartDate { get; set; }\n    public DateTime EndDate {  get; set; }\n    public string Title { get; set; }\n    public bool IsAllDay { get; set; }\n    public Color Color { get; set; }\n}\n<\/pre>\n<p>A collection of appointments, all stemming from an <code>IAppointment<\/code> interface implementation, can be fed to the Telerik Calendar control directly by simply using the <code>AppointmentSource<\/code> property, which can also be data bound. Here are some sample appointments being bound to the Calendar and the corresponding results in each platform:<\/p>\n<pre class=\"theme:vs2012 lang:cs decode:true\">\ncalendar.AppointmentsSource = new List() {\n    new Appointment() { \n        StartDate = DateTime.Today.AddDays(1), \n        EndDate = DateTime.Today.AddDays(2).AddTicks(-1), \n        Title = \"Mom's Birthday\",\n        Color = Color.Red },\n    new Appointment() { \n        StartDate = DateTime.Today.AddDays(3).AddHours(17), \n        EndDate = DateTime.Today.AddDays(3).AddHours(22), \n        Title = \"Big Game\",\n        Color = Color.Green },\n    new Appointment() {\n        StartDate = DateTime.Today.AddDays(11).AddHours(20), \n        EndDate = DateTime.Today.AddDays(12).AddHours(4), \n        Title = \"Progress Party\",\n        Color = Color.Red }\n};\n<\/pre>\n<p><img decoding=\"async\" src=\"https:\/\/devblogs.microsoft.com\/wp-content\/uploads\/sites\/44\/2019\/03\/Appointments.png\" alt=\"\" width=\"656\" height=\"334.66\" class=\"aligncenter size-full wp-image-30974\" \/><\/p>\n<p>Here&#8217;s a quick look at how professional Telerik Calendar appointments can look like through the Telerik UI for Xamarin Examples app (find the app on the <a href=\"https:\/\/itunes.apple.com\/dm\/app\/telerik-ui-for-xamarin-examples\/id1083924868?mt=8\" target=\"_blank\">iOS App Store<\/a> and <a href=\"https:\/\/play.google.com\/store\/apps\/details?id=com.telerik.xamarin\" target=\"_blank\">Google Play<\/a>):<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/devblogs.microsoft.com\/wp-content\/uploads\/sites\/44\/2019\/03\/CalendarExample.gif\" alt=\"Calendar in action gif\" width=\"233.33\" height=\"477.33\" class=\"aligncenter size-full wp-image-30975\" \/><\/p>\n<h2>Custom Calendar Cell Styling<\/h2>\n<p>Sure the Telerik Calendar has a polished UI, but there are times where you may want to customize its look and feel by manipulating the tiniest details and, in true developer-friendly form, the Telerik Calendar allows you to have custom styles for each cell. <\/p>\n<p>You can set a property called <code>SetStyleForCell<\/code> to a custom function that can style individual Calendar cells. All cells share a common base class, the <code>CalendarCell<\/code>, with the following properties: <\/p>\n<ul>\n<li><code>Text<\/code>: Gets the text displayed in the cell.<\/li>\n<li><code>Type<\/code> (<code>CalendarCellType<\/code>): Gets the type of the cell. The possible values are:\n<ol>\n<li><code>Date<\/code>: All cells that correspond to actual dates have this type<\/li>\n<li><code>WeekNumber<\/code>: Cells that hold week numbers<\/li>\n<li><code>DayName<\/code>: Cells that hold the days of the week<\/li>\n<ol>\n<\/li>\n<\/ul>\n<p>Each cell can be styled using the <code>CalendarCellStyle<\/code> class, which has the following options:<\/p>\n<ul>\n<li><code>BackgroundColor<\/code><\/li>\n<li><code>BorderColor<\/code><\/li>\n<li><code>BorderThickness<\/code><\/li>\n<li><code>FontSize<\/code><\/li>\n<li><code>FontWeight<\/code><\/li>\n<li><code>ForegroundColor<\/code><\/li>\n<\/ul>\n<p>Armed with cell styling flexibility, here&#8217;s how to color the first day of spring to be a green cell in the Calendar, for example:<\/p>\n<pre class=\"theme:vs2012 lang:cs decode:true\">\nvar calendar = new RadCalendar();\ncalendar.SetStyleForCell = this.EvaluateCellStyle;\n\t\nprivate CalendarCellStyle EvaluateCellStyle(CalendarCell cell)\n{\n    var springStyle = new CalendarCellStyle { \n        BackgroundColor = Color.Green,\n        FontSize = Device.OnPlatform(14, 30, 17),\n        FontWeight = FontWeight.Normal,\n        ForegroundColor = Color.FromRgb(139, 209, 0)\n    };\n\n    var dayCell = cell as CalendarDayCell;\n    if (dayCell != null &amp;&amp; dayCell.Date.Day == 22 &amp;&amp; dayCell.Date.Month == 3)\n    {\n        return springStyle;\n    }\n    return null;\n}\n<\/pre>\n<p>And the result:<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/devblogs.microsoft.com\/wp-content\/uploads\/sites\/44\/2019\/03\/SpringGreen.png\" alt=\"\" width=\"334\" height=\"626\" class=\"aligncenter size-full wp-image-30976\" \/><\/p>\n<p>Another common customization opportunity may arise with Appointments, where you may have a need to custom-style appointments on a busy calendar. With the Telerik Calendar, you get an <code>AppointmentStyle<\/code> property which is of the <code>CalendarAppointmentsStyle<\/code> type. This allows for complete color-coded customization of appointments with text and shapes.<\/p>\n<p>Here&#8217;s the visual structure of appointment styling in calendar cells; you can use text or shape or both.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/devblogs.microsoft.com\/wp-content\/uploads\/sites\/44\/2019\/03\/ShapesAppointments.png\" alt=\"\" width=\"460\" height=\"159\" class=\"aligncenter size-full wp-image-30977\" \/>\n<img decoding=\"async\" src=\"https:\/\/devblogs.microsoft.com\/wp-content\/uploads\/sites\/44\/2019\/03\/TextAppointments.png\" alt=\"\" width=\"564.66\" height=\"156\" class=\"aligncenter size-full wp-image-30978\" \/><\/p>\n<p>Some of the styling opportunities with <code>CalendarAppointmentsStyle<\/code> come with the following properties:<\/p>\n<ul>\n<li><code>DisplayMode<\/code>: Defines how appointments are visualized. Values can be <code>Text<\/code>, <code>TextWithShape<\/code>, <code>TextWithBackground<\/code>, and <code>Shape<\/code>.\n<li><code>Padding<\/code>: Defines the padding of the rectangle that holds the events.\n<li><code>Spacing<\/code>: Defines the empty space between two appointments in the same date.\n<li><code>ShapeType<\/code>: Defines the shape representing an appointment. Values can be <code>Rectangle<\/code>, <code>Ellipse<\/code>, <code>TriangleUp<\/code>, <code>TriangleDown<\/code>, and <code>Rhombus<\/code>.<\/li>\n<li><code>AllDayIndicatorLocation<\/code>: Defines the location where the all day indicators are visualized.<\/li>\n<\/ul>\n<p>Some examples of shapes representing appointments can be visualized as below:<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/devblogs.microsoft.com\/wp-content\/uploads\/sites\/44\/2019\/03\/AppointmentShapeTypes.png\" alt=\"\" width=\"750\" height=\"124\" class=\"aligncenter size-full wp-image-30979\" \/><\/p>\n<p>An example of an all-day appointment indicator is below. You get to control the location, width, and padding of how the indicator is rendered in the calendar cell:<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/devblogs.microsoft.com\/wp-content\/uploads\/sites\/44\/2019\/03\/AllDayAppointments.png\" alt=\"\" width=\"168\" height=\"130\" class=\"aligncenter size-full wp-image-30980\" \/><\/p>\n<h2>Conclusion<\/h2>\n<p>With Xamarin.Forms democratizing cross-platform mobile development for .NET developers, you can be proud to choose the Xamarin technology stack&#8230; just don&#8217;t go reinventing the wheel with complex manually-built UI. <a href=\"http:\/\/www.telerik.com\/xamarin-ui\" target=\"_blank\">Telerik UI for Xamarin<\/a> is here to help, and the engineering efforts behind each control show in their performance and polish. When you need to support any type of calendars and events in your cross-platform mobile app, the Telerik Calendar stands ready out-of-the-box, with a myriad of customization options. Just look through the detailed <a href=\"http:\/\/docs.telerik.com\/devtools\/xamarin\/controls\/calendar\/calendar-overview\" target=\"_blank\">docs<\/a> when you&#8217;re ready and keep your app users productive with the right calendar support. Cheers and happy coding!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>This is a special guest post from the Progress team at Telerik, the makers of the Telerik UI suites. Speaking on behalf of these awesome engineers of developer tooling is Sam Basu, a Developer Advocate for Telerik products and Xamarin aficionado. You may find him on Twitter as @samidip. Are you already building cross-platform native [&hellip;]<\/p>\n","protected":false},"author":1936,"featured_media":30975,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[2],"tags":[4,16],"class_list":["post-30966","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-developers","tag-xamarin-platform","tag-xamarin-forms"],"acf":[],"blog_post_summary":"<p>This is a special guest post from the Progress team at Telerik, the makers of the Telerik UI suites. Speaking on behalf of these awesome engineers of developer tooling is Sam Basu, a Developer Advocate for Telerik products and Xamarin aficionado. You may find him on Twitter as @samidip. Are you already building cross-platform native [&hellip;]<\/p>\n","_links":{"self":[{"href":"https:\/\/devblogs.microsoft.com\/xamarin\/wp-json\/wp\/v2\/posts\/30966","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/devblogs.microsoft.com\/xamarin\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/devblogs.microsoft.com\/xamarin\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/xamarin\/wp-json\/wp\/v2\/users\/1936"}],"replies":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/xamarin\/wp-json\/wp\/v2\/comments?post=30966"}],"version-history":[{"count":0,"href":"https:\/\/devblogs.microsoft.com\/xamarin\/wp-json\/wp\/v2\/posts\/30966\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/xamarin\/wp-json\/"}],"wp:attachment":[{"href":"https:\/\/devblogs.microsoft.com\/xamarin\/wp-json\/wp\/v2\/media?parent=30966"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/xamarin\/wp-json\/wp\/v2\/categories?post=30966"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/xamarin\/wp-json\/wp\/v2\/tags?post=30966"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}