<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Xamarin on DVLUP</title><link>/en/tags/xamarin/</link><description>Recent content in Xamarin on DVLUP</description><generator>Hugo</generator><language>en-US</language><lastBuildDate>Wed, 04 Nov 2020 00:00:00 +0000</lastBuildDate><atom:link href="/en/tags/xamarin/index.xml" rel="self" type="application/rss+xml"/><item><title>DevReach 2020</title><link>/en/blog/2020.11.04-devreach-2020/</link><pubDate>Wed, 04 Nov 2020 00:00:00 +0000</pubDate><guid>/en/blog/2020.11.04-devreach-2020/</guid><description>&lt;p&gt;In case you missed it, I spoke this year at DevReach 2020. DevReach is Europe&amp;rsquo;s Premier Developer Conference that takes place every year in Sofia, Bulgaria. This year&amp;rsquo;s conference was online only, but was still a lot of fun.&lt;/p&gt;&#10;&lt;p&gt;In my session, I show you how to write GitHub Actions workflows for a full CI/CD experience that automatically builds and releases your Xamarin.Forms, Xamarin.Android, Xamarin.iOS and UWP apps.&lt;/p&gt;&#10;&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;&#10;&#9;&#9;&#9;&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/OJhg8rB5D90&amp;amp;t=3222?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;&#10;&#9;&#9;&lt;/div&gt;&#10;&#10;&lt;blockquote&gt;&#10;&lt;p&gt;My session starts at &lt;code&gt;53:22&lt;/code&gt; and I go until &lt;code&gt;1:36:12&lt;/code&gt;&lt;/p&gt;&#10;&lt;/blockquote&gt;</description></item><item><title>Using Windows IoT, SignalR, Azure Custom Vision and Xamarin Forms to Flush a Toilet</title><link>/en/blog/2020.02.13-using-windows-iot-signalr-azure-custom-vision-and-xamarin-forms-to-flush-a-toilet/</link><pubDate>Thu, 13 Feb 2020 00:00:00 +0000</pubDate><guid>/en/blog/2020.02.13-using-windows-iot-signalr-azure-custom-vision-and-xamarin-forms-to-flush-a-toilet/</guid><description>&lt;p&gt;&lt;strong&gt;My cat uses the human toilet&lt;/strong&gt;. However, he doesn&amp;rsquo;t know how to flush when he&amp;rsquo;s done. So, I thought, &amp;ldquo;Why not train a custom trained machine learning model to know when to flush the toilet for him? That way, I can go on vacation without asking friends to stop by.&amp;rdquo;&lt;/p&gt;&#10;&lt;p&gt;That single thought began my trip through some great modern developer tools and tech to build a full solution for the problem. In this post, I&amp;rsquo;ll walk you through everything and you can explore the code and parts list here &lt;a href="https://github.com/LanceMcCarthy/Flusher" target="_blank" rel="noopener"&gt;https://github.com/LanceMcCarthy/Flusher&lt;/a&gt;&#10;.&lt;/p&gt;</description></item><item><title>Custom TypingStarted and TypingEnded Events</title><link>/en/blog/2020.01.02-custom-typingstarted-and-typingended-events/</link><pubDate>Thu, 02 Jan 2020 00:00:00 +0000</pubDate><guid>/en/blog/2020.01.02-custom-typingstarted-and-typingended-events/</guid><description>&lt;p&gt;You know that little indicator in a chat that shows if someone is currently typing? I am working on a new post (coming soon, link will be here) that uses SignalR to communicate who is currently typing in a chat room along with the messages themselves.&lt;/p&gt;&#10;&lt;p&gt;To determine who is typing, I use a timer and the &lt;code&gt;TextChanged&lt;/code&gt; event. The timer logic itself is straightforward, in the &lt;code&gt;TextChanged&lt;/code&gt; event starts a timer.&lt;/p&gt;</description></item><item><title>Preparing apps for Windows X and Surface Duo or Neo Devices.</title><link>/en/blog/2019.10.03-preparing-apps-for-windows-x-and-surface-duo-or-neo-devices/</link><pubDate>Thu, 03 Oct 2019 00:00:00 +0000</pubDate><guid>/en/blog/2019.10.03-preparing-apps-for-windows-x-and-surface-duo-or-neo-devices/</guid><description>&lt;p&gt;Preface - This is not Microsoft-provided information, just my guess after digging around the Microsoft.UI.Xaml source code after a conversation on Twitter. This is not coming from any MVP-NDA or other NDA source. I will update this post when official information becomes available.&lt;/p&gt;&#10;&lt;p&gt;There is suspiciously missing control from the XAML Gallery app - &lt;strong&gt;TwoPaneView&lt;/strong&gt;. It&amp;rsquo;s in the WinUI 2.2 release, but there&amp;rsquo;s no documentation, guidance or examples of it being used (yet). The only thing you&amp;rsquo;ll find is the API reference, which is automatically generated during the build process.&lt;/p&gt;</description></item><item><title>Draw Your Own Xamarin Pie Chart dynamically</title><link>/en/blog/2019.04.18-draw-your-own-pie-chart-dynamically/</link><pubDate>Thu, 18 Apr 2019 00:00:00 +0000</pubDate><guid>/en/blog/2019.04.18-draw-your-own-pie-chart-dynamically/</guid><description>&lt;p&gt;In this tutorial, I&amp;rsquo;ll show you how to draw your own pie chart just using lines and a list of data items. The code itself is in C#, but the concept can be used on any platform that has a drawing library and ArcSegments.&lt;/p&gt;&#10;&lt;p&gt;&lt;img src="../../../en/blog/2019.04.18-draw-your-own-pie-chart-dynamically/2019-04-18_13-44-40.png" alt=""&gt;&lt;/p&gt;&#10;&lt;p&gt;You can view the entire solution in &lt;a href="https://gist.github.com/LanceMcCarthy/b64ee5afdd27b125b8b47816799306e0" target="_blank" rel="noopener"&gt;this GitHub Gist&lt;/a&gt;&#10;. Okay, let&amp;rsquo;s get started!&lt;/p&gt;&#10;&lt;h2 id="setting-up"&gt;Setting Up&lt;/h2&gt;&#10;&lt;p&gt;The first thing you&amp;rsquo;ll need to understand is how the platform&amp;rsquo;s drawing library makes arcs. In this code, I&amp;rsquo;ll be using &lt;a href="https://docs.telerik.com/devtools/xamarin/controls/path/path-overview" target="_blank" rel="noopener"&gt;RadPath&lt;/a&gt;&#10; from &lt;a href="https://www.telerik.com/xamarin-ui" target="_blank" rel="noopener"&gt;Telerik UI for Xamarin&lt;/a&gt;&#10; most libraries work the same way. RadPath lets you use a custom Geometry which has &lt;a href="https://docs.telerik.com/devtools/xamarin/controls/path/getting-started/geometry-structure#radarcsegment" target="_blank" rel="noopener"&gt;RadArcSegment&lt;/a&gt;&#10; object, which has helpful &lt;strong&gt;StartAngle&lt;/strong&gt; and &lt;strong&gt;SweepAngle&lt;/strong&gt; properties.&lt;/p&gt;</description></item><item><title>Error XF001: Xamarin.Forms targets have been imported multiple times</title><link>/en/blog/2018.10.01-error-xf001-xamarin-forms-targets-have-been-imported-multiple-times/</link><pubDate>Mon, 01 Oct 2018 00:00:00 +0000</pubDate><guid>/en/blog/2018.10.01-error-xf001-xamarin-forms-targets-have-been-imported-multiple-times/</guid><description>&lt;p&gt;If you&amp;rsquo;re in the process of updating a Xamarin.Forms app to a more modern style project set up (NET Standard 2.0, PackageReference, etc), you may get the following error.&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;Error XF001: Xamarin.Forms targets have been imported multiple times. Please check your project file and remove the duplicate import(s).&lt;/strong&gt;&lt;/p&gt;&#10;&lt;p&gt;This can be because of the move to using PackageReference for your NuGet packages and a simple fix awaits you.&lt;/p&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;Close Visual Studio and navigate to the Solution in File Explorer&lt;/li&gt;&#10;&lt;li&gt;Delete the hidden &lt;strong&gt;.vs&lt;/strong&gt; folder&lt;/li&gt;&#10;&lt;li&gt;Go into each affected project sub folder and delete the following files; &lt;strong&gt;project_name.nuget.props&lt;/strong&gt; and &lt;strong&gt;project_name.nuget.targets&lt;/strong&gt;&lt;/li&gt;&#10;&lt;li&gt;Open the solution in Visual Studio, do a Clean and Rebuild, &lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;p&gt; &lt;/p&gt;</description></item><item><title>Custom Events and Xamarin.Forms Effect</title><link>/en/blog/2018.07.17-custom-events-and-xamarin-forms-effect/</link><pubDate>Tue, 17 Jul 2018 00:00:00 +0000</pubDate><guid>/en/blog/2018.07.17-custom-events-and-xamarin-forms-effect/</guid><description>&lt;p&gt;This post will walk you through setting up a &lt;a href="https://docs.microsoft.com/en-us/xamarin/xamarin-forms/app-fundamentals/effects/introduction" target="_blank" rel="noopener"&gt;Xamarin Platform Effect&lt;/a&gt;&#10; and show you how to wire up an event handler so you can leverage native APIs in the case that the Xamarin.Forms wrapper doesn&amp;rsquo;t yet have. For this example, I&amp;rsquo;ll use the Telerik UI for Xamarin RadCalendar.&lt;/p&gt;&#10;&lt;p&gt;tl;dr &lt;em&gt;Full source code on GitHub &lt;a href="https://github.com/LanceMcCarthy/CustomXamarinDemos/tree/master/RangeSelectionTest" target="_blank" rel="noopener"&gt;here&lt;/a&gt;&#10;.&lt;/em&gt;&lt;/p&gt;&#10;&lt;p&gt;I get frequently asked how to enable RangeSelection (aka Multiple Selection) for the RadCalendar. The native platform calendar controls all have Range Selection available, so we only need to create a  Platform Effect to access that native feature.&lt;/p&gt;</description></item><item><title>Epic Build 2018 Playlists</title><link>/en/blog/2018.05.09-epic-2018-playlists/</link><pubDate>Wed, 09 May 2018 00:00:00 +0000</pubDate><guid>/en/blog/2018.05.09-epic-2018-playlists/</guid><description>&lt;p&gt;Your one-stop shop for Microsoft Build 2018 sessions, slide decks, post links, keynotes and much more.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;a href="https://developer.microsoft.com/en-us/events/build/content/windows-ml--uwp-app-developer?playlist=5122af4c-63c2-4970-a4af-f5d006357a5b" target="_blank" rel="noopener"&gt;AI, Windows ML and Cognitive Services&lt;/a&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://developer.microsoft.com/en-us/events/build/content/msix-inside-and-out-pptx?playlist=80d147e8-f3b0-4ca0-a96f-cfc8e80bec20" target="_blank" rel="noopener"&gt;Desktop - Windows Store (UWP, Win32 and IoT)&lt;/a&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://developer.microsoft.com/en-us/events/build/content/building-web-api-solutions-with-authentication?playlist=d41c5eba-2ea9-4200-be07-62099c3c89ff" target="_blank" rel="noopener"&gt;ASP.NET, PWA and Web&lt;/a&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://developer.microsoft.com/en-us/events/build/content/free-ebook--developers-guide-to-microsoft-azure?playlist=0b7ba19f-91fa-42aa-be2f-87c0613fde9d" target="_blank" rel="noopener"&gt;Azure and Cloud Services&lt;/a&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://developer.microsoft.com/en-us/events/build/content/achieving-scale-with-hololens-and-bim?playlist=f0e2f1d8-49cd-4f66-9cf0-d49f0a35c61f" target="_blank" rel="noopener"&gt;Hololens and Mixed Reality&lt;/a&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://developer.microsoft.com/en-us/events/build/content/multi-sense-multi-device-world?playlist=fea8e802-aae4-4e11-89a0-00b61869ef23" target="_blank" rel="noopener"&gt;Microsoft Graph and Microsoft 365&lt;/a&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://developer.microsoft.com/en-us/events/build/content/build-xamarin-solutions-with-authentication?playlist=42f17792-3441-4502-a95f-21e115f1c717" target="_blank" rel="noopener"&gt;Xamarin&lt;/a&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://developer.microsoft.com/en-us/events/build/content/keynote-microsoft-365-app-development?playlist=ee7be727-1f8c-47ba-b1d9-3ae99eff9e3f" target="_blank" rel="noopener"&gt;Keynotes and other key presentations&lt;/a&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://developer.microsoft.com/en-us/events/build/content/windows-subsystem-for-linux?playlist=5440cdfa-f151-43d8-8f74-9f23cbcd35ce" target="_blank" rel="noopener"&gt;Windows Features&lt;/a&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;&lt;strong&gt;Living Document Note:&lt;/strong&gt;&lt;/p&gt;&#10;&lt;p&gt;These Playlists will continue to be reordered and updated in real time as new content becomes available. However, the links will always remain the same and you can refresh the playlist page to get any updated ordering/content.&lt;/p&gt;</description></item><item><title>Migrating from PCLStorage to .NET Standard 2.0</title><link>/en/blog/2018.04.19-migrating-from-pclstorage-to-net-standard-2-0/</link><pubDate>Thu, 19 Apr 2018 00:00:00 +0000</pubDate><guid>/en/blog/2018.04.19-migrating-from-pclstorage-to-net-standard-2-0/</guid><description>&lt;p&gt;If you&amp;rsquo;re a Xamarin Forms developer, you&amp;rsquo;ve likely used &lt;a href="https://github.com/dsplaisted/PCLStorage" target="_blank" rel="noopener"&gt;PCLStorage&lt;/a&gt;&#10; (or other Dependency Service) to interact with the target platform&amp;rsquo;s file system in the portable class library&amp;rsquo;s code. However, since November 2017, Xamarin.Forms now uses a .NET Standard 2.0 class library and PCLStorage is no longer supported.&lt;/p&gt;&#10;&lt;h2 id="systemiofile"&gt;System.IO.File&lt;/h2&gt;&#10;&lt;p&gt;This isn&amp;rsquo;t a problem because in .NET Core 2.0 you now have access to System.IO.File&amp;rsquo;s GetFolderPath and SpecialFolder methods (see &lt;a href="https://docs.microsoft.com/en-us/dotnet/api/system.io.file?view=netcore-2.0" target="_blank" rel="noopener"&gt;System.IO.File in .NET Core 2.0 docs&lt;/a&gt;&#10;).&lt;/p&gt;</description></item><item><title>Custom Themes in UI for Xamarin</title><link>/en/blog/2018.02.19-custom-themes-in-ui-for-xamarin/</link><pubDate>Mon, 19 Feb 2018 00:00:00 +0000</pubDate><guid>/en/blog/2018.02.19-custom-themes-in-ui-for-xamarin/</guid><description>&lt;p&gt;&lt;strong&gt;&lt;a href="https://www.telerik.com/xamarin-ui" target="_blank" rel="noopener"&gt;Telerik UI for Xamarin&lt;/a&gt;&#10;&lt;/strong&gt; comes with two themes out of the box, Default and Blue. You can easily style individual items, but you can also define an entire theme at once in a separate ResourceDictionary.&lt;/p&gt;&#10;&lt;p&gt;With this approach you can swap out ResourceDictionaries at runtime for a nice user-selected theme feature in your app&amp;rsquo;s settings. Let me walk you through a very simple demo to illustrate the approach.&lt;/p&gt;&#10;&lt;h3 id="step-1-create-your-custom-themes-resourcedictionary"&gt;Step 1. Create your custom theme&amp;rsquo;s ResourceDictionary&lt;/h3&gt;&#10;&lt;p&gt;Xamarin.Forms doesn&amp;rsquo;t have a good ResourceDictionary template, so start with a &lt;strong&gt;Content Page&lt;/strong&gt; (XAML) template and then change the ContentPage type to &amp;ldquo;ResourceDictionary&amp;rdquo; in both the XAML and code-behind.&lt;/p&gt;</description></item></channel></rss>