Create WPF Application Using Xamarin.Forms

Yes, you read the title right. In this blog, we’ll talk about creating WPF applications using Xamarin.Forms a little background first. Microsoft build one of the biggest developer conference organized by Microsoft happened in Seattle last week where Xamarin team released the stable version of Xamarin.Forms 3.0. One of one of the features this release has that it supports for WPF windows desktop applications using Xamarin.Forms. In this blog i will give you step by step guide on how to add WPF application in your Xamarin.Forms application solution and then do the changes in it to to use Xamarin.Forms controls in WPF.

Yes, you read the title right. In this blog, we’ll talk about creating WPF applications using Xamarin.Forms. A little background first. Microsoft Build is one of the biggest developer conferences organized by Microsoft. It happened in Seattle last week where the Xamarin team released the stable version of Xamarin.Forms 3.0. One of the features this release has is that it supports WPF Windows desktop applications using Xamarin.Forms. In this blog, I will give you a step by step guide on how to add WPF applications in your Xamarin.Forms application solution and then do the changes in it to use Xamarin.Forms controls in WPF.

As WPF works only on Windows, all our steps will be done in Visual Studio 2017 15.7 version on Windows,

  1. Create a new Xamarin.Forms project by clicking on new project => cross platform Xamarin.Forms blank application using .Net standard you will get the following project structure which will have a .Net standard project, iOS project, Android project and UWP project if you have your UWP SDK installed and you are working on Windows 10.

    Xamarin

  2. Now right click on the solution file and select the option “Manage nuget packages for Solution” from the popup menu. On Manage NuGet Packages window, go to Updates tab and update your Xamarin.Forms package to the latest version, that is, 3.0. In my case since I have already updated, it’s shown in the installed tab.

    Xamarin

  3. Close the Nuget Package Manager window, right click on the solution file again and select Add => New Projectoption from the popup menu. It will open the following window where you have to click on Windows Desktop option in the left window and select WPF App (.NET Framework) like I have done. Give the name to the project and click OK.

    Xamarin

  4. Once the project is created, right click on WPF project file in Solution Explorer and select “Manage NuGet Packages” from the popup menu. On “Manage NuGet Packages” window, click on Browse tab, install Forms NuGet Package to the project then select the include prerelease checkbox, browse for “Xamarin.Forms.Platform.WPF” and click on install button as highlighted in below screenshots.

    Xamarin

    Xamarin

  5. Once Xamarin.Forms.Platform.WPF is installed, close the Nuget Package Manager window. Now, right-click on References of WPF project and select Add Reference option from popup menu to add the reference of .NET Standard Project from the Projects => Solutionoption in the window as highlighted in the below screenshot

    Xamarin

  6. In XAML file of WPF application, change the root node from Window to wpf:FormsApplicationPage and add xmlns:wpf=”clr-namespace:Xamarin.Forms.Platform.WPF;assembly=Xamarin.Forms.Platform.WPF” in namespace declarations, as shown in the below image.

    Xamarin
  7. In xaml.csfile of WPF application, add the following two using directives.
    1. using Xamarin.Forms;  
    2. using Xamarin.Forms.Platform.WPF;  
    and change the parent class from Window to FormsApplicationPage and add the following two lines of code in the constructor.
    1. Forms.Init();  
    2. LoadApplication(new TrXamGuide.App());  
    These two lines will initialize Xamarin.Forms and loan the Xamarin.Forms app created in .NET Standard project. Below is the screenshot highlighting the code differences.

    Xamarin
     
  8. Your WPF application using Xamarin.Forms is now ready to execute. This is how it will look once executed

    Xamarin

Please keep in mind that Xamarin.Forms.Platform.WPF is still in pre-release so all the features of Xamarin.Forms will not be available in it, to get the complete list of available features use this link

You can get the complete solution code from here. Let me know if I have missed anything or you want to know about anything in particular related to Xamarin.Forms development. I will be coming up with more such articles in the near future.