{"id":33262,"date":"2017-09-15T12:45:01","date_gmt":"2017-09-15T19:45:01","guid":{"rendered":"https:\/\/blog.xamarin.com\/?p=33262"},"modified":"2019-04-04T23:40:12","modified_gmt":"2019-04-05T06:40:12","slug":"xamarin-forms-tips-beating-learning-curve","status":"publish","type":"post","link":"https:\/\/devblogs.microsoft.com\/xamarin\/xamarin-forms-tips-beating-learning-curve\/","title":{"rendered":"Xamarin.Forms: Tips for Beating the Learning Curve"},"content":{"rendered":"<p>As a first time user learning any new technology or pattern, there\u2019s always a curve, and over the years I&#8217;ve stood at the threshold of a product and gazed up that curve to determine how painfully steep it appeared and how long it would take\u00a0until I was productive. Now, as the Program Manager for Xamarin.Forms, I gather and receive a lot of feedback from first time users, and stand in a position of being able to offer some help.<\/p>\n<h2>Tips to Beat the Learning Curve<\/h2>\n<p>I\u2019ve curated some great resources to get you over the curve, from our documentation guides to Xamarin University training materials, blog posts, and more. Whether you&#8217;re new to Xamarin.Forms or a seasoned user, I think you&#8217;ll find something useful below.<\/p>\n<h3>Quick Index<\/h3>\n<table>\n<tbody>\n<tr>\n<td valign=\"top\">\n<ul>\n<li>Prerequisites\n<ul>\n<li><a href=\"#installation\">Installation<\/a><\/li>\n<li><a href=\"#mac\">Simplified iOS Development<\/a><\/li>\n<\/ul>\n<\/li>\n<li>Common First Questions\n<ul>\n<li><a href=\"#navigation\">Navigation<\/a><\/li>\n<li><a href=\"#layout\">Layout<\/a><\/li>\n<li><a href=\"#designer\">Visual Design<\/a><\/li>\n<li><a href=\"#controls\">Controls<\/a><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/td>\n<td valign=\"top\">\n<ul>\n<li>Beyond Basics\n<ul>\n<li><a href=\"#customizingcontrols\">Customizing Controls<\/a><\/li>\n<li><a href=\"#customfonts\">Custom Fonts<\/a><\/li>\n<li><a href=\"#images\">Managing Images<\/a><\/li>\n<li><a href=\"#datastorage\">Data Storage<\/a><\/li>\n<li><a href=\"#pushnotifications\">Push Notifications<\/a><\/li>\n<li><a href=\"#authentication\">Authentication<\/a><\/li>\n<li><a href=\"#inspecting\">Inspecting UI<\/a><\/li>\n<\/ul>\n<\/li>\n<li><a href=\"#bonus\">Bonus<\/a><\/li>\n<\/ul>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h2>The Giddyup: Prerequisites<\/h2>\n<p>&nbsp;<\/p>\n<h3>What do I need to install?<\/h3>\n<p><a name=\"installation\"><\/a>Mobile development requires more than a few things before you can be productive, including mobile platform SDKs, an IDE, and some combination of emulators, simulators, and devices. These guides will get you going quickly:<\/p>\n<p><a href=\"https:\/\/developer.xamarin.com\/guides\/android\/getting_started\/installation\/windows\/\">Windows Installation<\/a>\n<a href=\"https:\/\/docs.microsoft.com\/en-us\/visualstudio\/mac\/installation\">Mac Installation<\/a><\/p>\n<p>Also check out this self-guided session from Xamarin University,\u00a0<a href=\"https:\/\/university.xamarin.com\/classes\/track\/all#xam101-setup\" target=\"_blank\" rel=\"noopener noreferrer\">Getting Started With Xamarin [XAM101]<\/a>.<\/p>\n<h3>Simplified iOS Development<\/h3>\n<p><a name=\"mac\"><\/a>We&#8217;ve been hard at work simplifying iOS development by introducing the <a href=\"https:\/\/www.xamarin.com\/live\">Xamarin Live Player<\/a> (currently in Preview 2). Xamarin Live allows you to code in Visual Studio 2017 and see your app immediately on device via the Xamarin Live Player app.<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/wp-content\/uploads\/sites\/44\/2019\/03\/LivePlayerQuick.gif\"><img decoding=\"async\" class=\"aligncenter size-full wp-image-32909\" src=\"https:\/\/devblogs.microsoft.com\/wp-content\/uploads\/sites\/44\/2019\/03\/LivePlayerQuick.gif\" alt=\"\" width=\"1712\" height=\"1040\" \/><\/a><\/p>\n<p>When you\u2019re ready to compile and deploy your applications for iOS, or outgrow the Xamarin Live Player&#8217;s capabilities, you can connect to your Mac and use the <a href=\"https:\/\/developer.xamarin.com\/guides\/cross-platform\/windows\/ios-simulator\/\">Remote iOS Simulator for Windows<\/a>.<\/p>\n<h2>Common First Questions<\/h2>\n<p>&nbsp;<\/p>\n<h3>How do I navigate from one screen to another?<\/h3>\n<p><a name=\"navigation\"><\/a><img decoding=\"async\" class=\"aligncenter size-medium\" src=\"https:\/\/developer.xamarin.com\/guides\/xamarin-forms\/application-fundamentals\/navigation\/Images\/page-types.png\" width=\"1860\" height=\"620\" \/><\/p>\n<p>Xamarin.Forms screens are called Pages and use the base class <code>ContentPage<\/code>. Xamarin.Forms follows a stack concept and you push and pop from that stack. Before you can do that, you need a navigation stack. The easiest way to introduce one is to start your application with a <code>NavigationPage<\/code>.<\/p>\n<p>Now, from within a <code>ContentPage<\/code>, you can simply use the <code>Navigation<\/code> service to push a new page onto the navigation stack:<\/p>\n<pre title=\"App.xaml.cs\" class=\"lang:c# decode:true \">MainPage = new NavigationPage( new FirstPage() );<\/pre>\n<pre title=\"FirstPage.xaml.cs\" class=\"lang:c# decode:true \">await Navigation.PushAsync( new SecondPage() );<\/pre>\n<p>For more information about navigation, visit the <a href=\"https:\/\/developer.xamarin.com\/guides\/xamarin-forms\/application-fundamentals\/navigation\/\">guide here<\/a>.<\/p>\n<h3>How do I lay out my content?<\/h3>\n<p><a name=\"layout\"><\/a>Xamarin.Forms supports <a href=\"https:\/\/developer.xamarin.com\/guides\/xamarin-forms\/user-interface\/controls\/layouts\/\">several layout patterns<\/a>, including Grid, StackLayout, AbsoluteLayout, and RelativeLayout. I recommend you learn to use and love the <a href=\"https:\/\/developer.xamarin.com\/guides\/xamarin-forms\/user-interface\/layouts\/grid\/\">Grid<\/a>, as it&#8217;s presently the most flexible and performant option.<\/p>\n<p><img decoding=\"async\" class=\"size-medium aligncenter\" src=\"https:\/\/developer.xamarin.com\/guides\/xamarin-forms\/user-interface\/layouts\/grid\/Images\/Layouts-sml.png\" width=\"500\" height=\"168\" \/><\/p>\n<p>For highly optimized layouts, explore <a href=\"https:\/\/developer.xamarin.com\/guides\/xamarin-forms\/user-interface\/layouts\/custom\/\">creating a custom layout<\/a>, where you can finely control aspects of the measure and invalidation cycles.<\/p>\n<p>Check out our Xamarin University Self-Guided course on <a href=\"https:\/\/university.xamarin.com\/classes\/track\/xamarin-forms#layout-in-xamarinforms-xam135\" target=\"_blank\" rel=\"noopener noreferrer\">Layout in Xamarin.Forms[XAM135]<\/a>.<\/p>\n<blockquote style=\"text-align: left; font-size: 16px; padding: 10px 20px; border-left: 3px solid red;\"><p>Awesomeness Alert!\u00a0Some adventurous community members have recently taken exception to the long held opinion that Xamarin.Forms cannot create highly polished layouts:<\/p><\/blockquote>\n<blockquote class=\"twitter-tweet\">\n<p dir=\"ltr\" lang=\"en\">Inspired by <a href=\"https:\/\/twitter.com\/adpedley\">@adpedley<\/a> and <a href=\"https:\/\/twitter.com\/devnl\">@devnl<\/a> latests articles about beautiful UI in <a href=\"https:\/\/twitter.com\/hashtag\/Xamarin?src=hash\">#Xamarin<\/a> Forms, soon will write about recreate the Netflix UI. <a href=\"https:\/\/t.co\/6Sac0mKXqK\">pic.twitter.com\/6Sac0mKXqK<\/a><\/p>\n<p>\u2014 Javier Su\u00e1rez Ruiz (@jsuarezruiz) <a href=\"https:\/\/twitter.com\/jsuarezruiz\/status\/907232466179694592\">September 11, 2017<\/a><\/p><\/blockquote>\n<p><script async src=\"\/\/platform.twitter.com\/widgets.js\" charset=\"utf-8\"><\/script><\/p>\n<blockquote class=\"twitter-tweet\">\n<p dir=\"ltr\" lang=\"en\">Just blogged: Kickass UI in Xamarin Forms: Twitter &#8211; <a href=\"https:\/\/t.co\/gpYdUy6DKc\">https:\/\/t.co\/gpYdUy6DKc<\/a> with thanks to <a href=\"https:\/\/twitter.com\/adpedley\">@adpedley<\/a> <a href=\"https:\/\/twitter.com\/xamarinhq\">@xamarinhq<\/a> <a href=\"https:\/\/twitter.com\/hashtag\/Xamarin?src=hash\">#Xamarin<\/a><\/p>\n<p>\u2014 Steven Thewissen (@devnl) <a href=\"https:\/\/twitter.com\/devnl\/status\/901026193536888832\">August 25, 2017<\/a><\/p><\/blockquote>\n<p><script async src=\"\/\/platform.twitter.com\/widgets.js\" charset=\"utf-8\"><\/script><\/p>\n<blockquote class=\"twitter-tweet\">\n<p dir=\"ltr\" lang=\"en\">This is basically my stop saying you can&#8217;t have a polished app via Xamarin.Forms, post \ud83d\ude42 <a href=\"https:\/\/t.co\/ZpyMe5Va5T\">https:\/\/t.co\/ZpyMe5Va5T<\/a><\/p>\n<p>\u2014 Adam Pedley (@adpedley) <a href=\"https:\/\/twitter.com\/adpedley\/status\/896320323716435968\">August 12, 2017<\/a><\/p><\/blockquote>\n<p><script async src=\"\/\/platform.twitter.com\/widgets.js\" charset=\"utf-8\"><\/script><\/p>\n<h3>How do I see my design?<\/h3>\n<p><a name=\"designer\"><\/a>You have a few options here. As the Xamarin Live Player gets better and better, it\u2019s a great companion for live editing XAML in the text editor and seeing an instant rendering. A little tip: use an application like <a href=\"http:\/\/www.airsquirrels.com\/reflector\/\" target=\"_blank\" rel=\"noopener noreferrer\">Reflector<\/a> to mirror your device on your development machine.<\/p>\n<p>Our designer team has also been making improvements to the <a href=\"https:\/\/developer.xamarin.com\/guides\/xamarin-forms\/xaml\/xaml-previewer\/\">Xamarin.Forms Previewer<\/a>.<\/p>\n<h3>Where do I find _____ control?<\/h3>\n<p><a name=\"controls\"><\/a>Xamarin.Forms provides implementations of <a href=\"https:\/\/developer.xamarin.com\/guides\/xamarin-forms\/user-interface\/controls\/views\/\">many native UI controls<\/a> across each target platform. This concept of abstraction becomes more clear when you see the mapping of <a href=\"https:\/\/developer.xamarin.com\/guides\/xamarin-forms\/application-fundamentals\/custom-renderer\/renderers\/\">Xamarin.Forms renderers to native controls<\/a>.<\/p>\n<p>Still looking? Xamarin has a great ecosystem of third party and community controls to fill in the gaps and extend the platform. Spend a few minutes on your favorite search engine, GitHub, and searching NuGet.<\/p>\n<h2>Moving Beyond Basics<\/h2>\n<h3>How do I customize a control?<\/h3>\n<p><a name=\"customizingcontrols\"><\/a>Out-of-the-box Xamarin.Forms controls provide basic customization possibilities, and we provide doors for when you \u201chit a wall.\u201d Here are your options:<\/p>\n<h4>Platform Specifics<\/h4>\n<p>When you need to customize a control for only a specific platform, you can implement a <a href=\"https:\/\/developer.xamarin.com\/guides\/xamarin-forms\/platform-features\/platform-specifics\/\">Platform Specific<\/a>. A good example is one provided to <a href=\"https:\/\/developer.xamarin.com\/guides\/xamarin-forms\/platform-features\/platform-specifics\/consuming\/ios\/#adjust_font_size\">adjust the font size of an Entry to fit the control width<\/a>.<\/p>\n<h4>Effects<\/h4>\n<p><a href=\"https:\/\/developer.xamarin.com\/guides\/xamarin-forms\/application-fundamentals\/effects\/introduction\/\">Effects<\/a> are good for when you need to add a customization on each platform to a control, which may be useful across a variety of controls, and when you just need to modify a single property that isn\u2019t currently exposed in the control abstraction. Some common examples are <a href=\"https:\/\/developer.xamarin.com\/samples\/xamarin-forms\/Effects\/ShadowEffect\/\">adding shadows<\/a> or one from the <a href=\"https:\/\/github.com\/FormsCommunityToolkit\/FormsCommunityToolkit\">Xamarin.Forms Community Toolkit<\/a> that I often use to remove the border of an Entry.<\/p>\n<p>Sign up for the live Xamarin University class\u00a0<a href=\"https:\/\/university.xamarin.com\/classes\/track\/xamarin-forms#using-effects-in-xamarinforms-xam330\" target=\"_blank\" rel=\"noopener noreferrer\">Using Effects in Xamarin.Forms [XAM330]<\/a> to learn more.<\/p>\n<h4>Custom Renderers<\/h4>\n<p><a href=\"https:\/\/developer.xamarin.com\/guides\/xamarin-forms\/application-fundamentals\/custom-renderer\/introduction\/\">Creating a custom renderer<\/a> gives you total control of the native platform control for design and behavior. <a href=\"https:\/\/developer.xamarin.com\/guides\/xamarin-forms\/application-fundamentals\/custom-renderer\/entry\/\">This guide<\/a> demonstrates creating a simple custom Entry renderer.<\/p>\n<p>Custom renderers are also where you want to go when implementing a control that may not currently exist in Xamarin.Forms, such as a <a href=\"https:\/\/github.com\/xamarinhq\/app-acquaint\/blob\/master\/App\/Acquaint.XForms\/Acquaint.XForms.Droid\/Renderers\/FloatingActionButtonViewRenderer.cs\">Floating Action Button<\/a>. Xamarin University covers this topic, as well, for scenarios such as interactive graphs, a custom drawing surface, and more in the live session\u00a0<a href=\"https:\/\/university.xamarin.com\/classes\/track\/xamarin-forms#xamarinforms-renderers-xam335\" target=\"_blank\" rel=\"noopener noreferrer\">Xamarin.Forms Renderers [XAM335]<\/a>.<\/p>\n<h3>How do I use custom fonts?<\/h3>\n<p><a name=\"customfonts\"><\/a>While Xamarin.Forms makes a lot of cross-platform development smooth, and while <a href=\"https:\/\/developer.xamarin.com\/guides\/xamarin-forms\/user-interface\/text\/fonts\/\">setting font attributes<\/a> is included, <a href=\"https:\/\/developer.xamarin.com\/guides\/xamarin-forms\/user-interface\/text\/fonts\/#Using_a_Custom_Font\">custom fonts<\/a> require a bit more attention.<\/p>\n<p>We use a custom icon font, WeatherIcons, in our Weather demo app. Once you have the font properly set up in the platform projects, <a href=\"https:\/\/github.com\/davidortinau\/build2017-new-in-xamarin-forms\/blob\/master\/Weather\/Weather.Forms\/HistoryPage.xaml#L55\">using the font<\/a> in XAML is pretty simple.<\/p>\n<pre class=\"lang:xhtml decode:true \">&lt;Label Text=\"{Binding WeatherIcon}\" FontSize=\"18\" Grid.Column=\"0\" VerticalTextAlignment=\"Center\" TextColor=\"White\"&gt;\r\n    &lt;Label.FontFamily&gt;\r\n        &lt;OnPlatform x:TypeArguments=\"x:String\"&gt;\r\n            &lt;On Platform=\"UWP\" Value=\"\/Assets\/WeatherIcons.ttf#Weather Icons\"&gt;&lt;\/On&gt;\r\n            &lt;On Platform=\"iOS\" Value=\"Weather Icons\"&gt;&lt;\/On&gt;\r\n            &lt;On Platform=\"Android\" Value=\"WeatherIcons.ttf#Weather Icons\"&gt;&lt;\/On&gt;\r\n        &lt;\/OnPlatform&gt;\r\n    &lt;\/Label.FontFamily&gt;\r\n&lt;\/Label&gt;<\/pre>\n<h3>Where do I put my images?<\/h3>\n<p><a name=\"images\"><\/a>Like fonts, <a href=\"https:\/\/developer.xamarin.com\/guides\/xamarin-forms\/user-interface\/images\/\">managing images<\/a> requires more effort. This is in part due to the way each platform handles images differently, and the variety of sizes and densities each requires or supports. <a href=\"https:\/\/developer.xamarin.com\/guides\/xamarin-forms\/user-interface\/images\/#Local_Images\">This guide<\/a> will show you where each expects to find images and how you can load them. When you place them in the right place, referencing them is as simple as <code>&lt;Image Source=\"waterfront.jpg\" \/&gt;<\/code>. The platforms will find the image and deliver the proper density for the device.<\/p>\n<h3>How can I store data locally?<\/h3>\n<p><a name=\"datastorage\"><\/a>Each platform has a storage API that Xamarin.Forms exposes via <code>Application.Current.Properties<\/code>. <a href=\"https:\/\/developer.xamarin.com\/guides\/xamarin-forms\/application-fundamentals\/application-class\/#Properties_Dictionary\">This API<\/a> is good for storing simple data.<\/p>\n<p>As your storage needs become more complex, you\u2019ll want to start exploring options like <a href=\"https:\/\/developer.xamarin.com\/guides\/xamarin-forms\/application-fundamentals\/databases\/\">sqlite<\/a>, <a href=\"https:\/\/docs.microsoft.com\/en-us\/azure\/app-service-mobile\/app-service-mobile-dotnet-how-to-use-client-library\">Azure Mobile Apps<\/a>, <a href=\"https:\/\/blog.xamarin.com\/shared-drawing-with-the-realm-mobile-platform\/\">Realm + Azure<\/a>, or any number of other options available.<\/p>\n<h3>Where do I get started with Push Notifications?<\/h3>\n<p><a name=\"pushnotifications\"><\/a><a href=\"https:\/\/developer.xamarin.com\/guides\/xamarin-forms\/cloud-services\/push-notifications\/azure\/\">Azure Mobile Apps<\/a> is a great option for Xamarin.Forms apps. The Azure documentation site includes an article on <a href=\"https:\/\/docs.microsoft.com\/en-us\/azure\/app-service-mobile\/app-service-mobile-xamarin-forms-get-started-push\">enabling push notifications<\/a> in your app.<\/p>\n<p>Other services such as Urban Airship provide <a href=\"https:\/\/docs.urbanairship.com\/platform\/xamarin\/\">components for Xamarin apps<\/a> to enable use of their APIs.<\/p>\n<h3>How do I authenticate with ______ service?<\/h3>\n<p><a name=\"authentication\"><\/a>This is fairly dependent on what the service is, but in general I recommend starting with the service\u2019s component to see if they expose an API for authentication. Take a look at using <a href=\"https:\/\/developer.xamarin.com\/guides\/xamarin-forms\/cloud-services\/authentication\/oauth\/\">Xamarin.Auth<\/a> which has built-in authenticators for Google, Microsoft, Facebook, and Twitter. I\u2019ve also used it to authenticate with the Strava oAuth service.<\/p>\n<h3>How do I inspect my app UI tree?<\/h3>\n<p><a name=\"inspecting\"><\/a>Visual Studio Enterprise license holders have access to the <a href=\"https:\/\/developer.xamarin.com\/guides\/cross-platform\/inspector\/\">Xamarin Inspector<\/a> for this very purpose! While this is our clear favorite and what we use, there are other commercial and open source projects out there for inspecting mobile apps.<\/p>\n<p><img decoding=\"async\" class=\"alignnone size-medium\" src=\"https:\/\/developer.xamarin.com\/guides\/cross-platform\/inspector\/Images\/interactive-1.0.0-bike_inspect_3d-small.png\" width=\"1226\" height=\"800\" \/><\/p>\n<p><a name=\"bonus\"><\/a><\/p>\n<h2>Bonus: Additional &#8220;Stuff&#8221;<\/h2>\n<ul>\n<li>Checking connectivity is something you\u2019ll probably bake into every mobile app, so check out the <a href=\"https:\/\/github.com\/jamesmontemagno\/ConnectivityPlugin\">Connectivity plugin<\/a>.<\/li>\n<li>There are lots of good plugins out there to make cross-platform development easier. Check out <a href=\"https:\/\/github.com\/xamarin\/XamarinComponents\">this list<\/a> and browse NuGet and GitHub to discover even more.<\/li>\n<li>I love to promote and share useful resources, but it\u2019s gonna be hard to top Xamarin University instructor Kym Phillpotts\u2019 recent blog of <a href=\"http:\/\/www.kymphillpotts.com\/xamarin-tools-and-resources\/\">Xamarin Tools and Resources<\/a>.<\/li>\n<li>Our <a href=\"https:\/\/developer.xamarin.com\/guides\/xamarin-forms\/deployment-testing\/performance\/\">performance guide<\/a> is &#8220;recommended mandatory&#8221; reading.<\/li>\n<\/ul>\n<h2>Get Coding<\/h2>\n<p>I hope you discovered a few tips that are useful for you, and I encourage you to share your own discoveries as you begin the journey. If you happen to tweet something, please mention me (<a href=\"https:\/\/twitter.com\/davidortinau\" target=\"_blank\" rel=\"noopener noreferrer\">@davidortinau<\/a>) so I can add it to my list and help share with others.<\/p>\n<p><a href=\"https:\/\/forums.xamarin.com\/\"><em>Discuss this post in the Xamarin Forums<\/em><\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>As a first time user learning any new technology or pattern, there\u2019s always a curve, and over the years I&#8217;ve stood at the threshold of a product and gazed up that curve to determine how painfully steep it appeared and how long it would take\u00a0until I was productive. Now, as the Program Manager for Xamarin.Forms, [&hellip;]<\/p>\n","protected":false},"author":553,"featured_media":43804,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[2,367],"tags":[16],"class_list":["post-33262","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-developers","category-xamarin-forms","tag-xamarin-forms"],"acf":[],"blog_post_summary":"<p>As a first time user learning any new technology or pattern, there\u2019s always a curve, and over the years I&#8217;ve stood at the threshold of a product and gazed up that curve to determine how painfully steep it appeared and how long it would take\u00a0until I was productive. Now, as the Program Manager for Xamarin.Forms, [&hellip;]<\/p>\n","_links":{"self":[{"href":"https:\/\/devblogs.microsoft.com\/xamarin\/wp-json\/wp\/v2\/posts\/33262","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\/553"}],"replies":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/xamarin\/wp-json\/wp\/v2\/comments?post=33262"}],"version-history":[{"count":0,"href":"https:\/\/devblogs.microsoft.com\/xamarin\/wp-json\/wp\/v2\/posts\/33262\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/xamarin\/wp-json\/wp\/v2\/media\/43804"}],"wp:attachment":[{"href":"https:\/\/devblogs.microsoft.com\/xamarin\/wp-json\/wp\/v2\/media?parent=33262"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/xamarin\/wp-json\/wp\/v2\/categories?post=33262"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/xamarin\/wp-json\/wp\/v2\/tags?post=33262"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}