 Hi, I'm James Montemagno, developer evangelist at Xamarin. Today we're going to take a look at Xamarin Forms, enabling you to leverage your existing C-sharp, .NET, and XAML skills to build out native iOS, Android, and Windows applications. Today we're going to cover Xamarin and Xamarin Forms to see exactly what's all included. Then we'll take a look at how we can leverage existing XAML and MVVM skills to build out those native iOS, Android, and Windows applications with a shared user interface. Of course, I'll show you exactly where to get started. The Xamarin platform is extremely unique, enabling you to use your shared C-sharp and .NET libraries to build out a common back-end for all of your iOS, Android, and of course Windows applications. It looks a little bit something like this. Our shared C-sharp back-end is all of our business logic, platform independent code, and .NET code such as our models, view models, SQL databases, RESTful service calls. Then we give you the tools to build out a native iOS, Android, and of course Windows applications. That shared code is anywhere between 50, 60, 70 percent or more. But with Xamarin Forms, it introduces a brand new optional shared user interface library, common controls across iOS, Android, and Windows phone that sits on top of that shared C-sharp back-end. Inside of Xamarin Forms is a lot. It's 40 plus pages layouts and controls that you can build from C-sharp code behind or XAML to a data binding, a navigation library, animation, dependency service, and messaging center. So if you're familiar with MVVM, you're going to feel right at home. Of course in Xamarin Forms, we have different pages such as content page, navigation, tab pages, and ways to lay out your control such as a stack layout, relative layout, or a grid. Of course, there's the controls. These are just a few of them here and we'll take a look at more things such as buttons, editors, and entries, and labels, all available to you from shared C-sharp code. Let's take a look at how we get started using Xamarin Forms today. Here we are inside of Visual Studio 2015. After you have Xamarin installed, you're able to save file, new project, and get started with the Xamarin platform. You have brand new Android and iOS templates to build that native iOS and Android applications all in C-sharp. If you want to get started with Xamarin Forms and the cross-platform UI layer, select mobile apps. You'll see some blank applications where you can use a portable class library or shared code project. I'm going to select a portable class library, solution, and hit OK. This will automatically create my shared code, iOS, Android, and Windows Phone applications, and tie everything together for me. Here we go. We can see our portable class libraries already brought in our Xamarin Forms references, and in our Android and iOS applications is already brought in and tied in our portable class libraries. Now the core of any Xamarin Forms application is the app.cs file. This is our application class, and it specifies the root of our application. Here's our main content page that's simply creating a label and setting the text to welcome to Xamarin Forms. Let's see what this looks like right out of the box. I'm going to set our Android application as our startup, and we'll start without debugging. Let's bring up our simulator, and there we go, welcome to Xamarin Forms. If we come over now and set our iOS application as the startup and rebuild this, we'll see the exact same application, welcome to Xamarin Forms, but on iOS with the native iOS label. With it all compiled up, we'll simply say start. And there you have it. By running on Windows Phone, we'll see the same thing. But let's add and make a little bit more complex application. I'm going to go ahead and create a brand new content page that I've copied in here. So it's page one and it inherits from content page, which is Xamarin Forms page. Here I have a simple button that says click me, a label that will reference how many times we've clicked that button, and we add those two items to our stack layout. This will stack them automatically on top of each other. And the final thing that I do is set the content of the entire page to that stack layout. Now we can come back to our application class. Instead of creating a new content page here, we'll say new page one. Again, this is completely 100% in our shared code. So let's come and compile up our portable class library and our iOS application. We have click me right in the center and every single time I click, it increases the count. If I come over to my Android application and we test it here, we'll see a native Android button and a native Android text view displaying the clicks. If we bring up the simulator, there it is, automatically 100% from shared code. Let's see what this looks like on Windows Phone. There you have it, a Windows Phone button and the same code and logic from the UI and the business logic all being shared across iOS, Android and Windows Phone. Obviously now we build out our full application with more models and view models and views, but that was just a quick look at getting started. We just saw how to get started with Xamarin Forms, but what about MVVM and XAML support and data binding? We're built right into Xamarin Forms as full XAML support. XAML is an XML markup language to build out user interfaces. Here we can see a stack layout with two entry controls and a button with a username, password and a click event all bound with a data binding syntax. But let's see exactly how that works. Well, everything is based on MVVM, which is an architectural pattern called model, view, view model. We start with the view. This is a representation of how we display our information. This is our XAML. Then we have our view model, which handles data interactions to and from our view. This is all of our business logic calls, such as handling click events or going off to a restful service. And then we have our physical data that's over here. These are our data objects that live in our databases or our physical JSON models. Now the beauty of MVVM is that it's not only just an architectural pattern, but it's one that fits in great with a data binding framework. This handles all the interactions between the view and the view model. So when you update your view, the view model properties in the code behind update automatically and vice versa. And Xamarin Forms has a full data binding framework built right in. So let's see exactly how that works though. Everything is based on I notify property change. It's an interface that you implement in your view model. It says whenever I change a property, raise a notification to anyone that's listening. How this would look, let's say for a first name property is a getter and setter. And whenever I set the first name, I simply call on property changed and pass in the name of the property. Now anyone that subscribed, such as Xamarin Forms will automatically update the user interface. We can create that user interface here in C sharp code behind by creating the label and binding the text property to first name or use the beautiful XAML syntax to just say binding first name. Let's take a look right now of using MVVM and XAML to build out our native iOS, Android and Windows applications. Here I am back in Visual Studio 2015. Now I already started building out a little application called My Stocks that uses Yahoo's API to pull down stock quotes in real time. I have some shared code, my models and my view models here such as different queries that are being executed. If we take a look at my stock view model, this is where all the data binding is gonna occur. I have a quote, company, year range that can all be set and my user interface can react automatically. The core here is this command, the get quote command that when executed will call get quote. This uses all.net codes such as HTTP client to make a restful call up to Yahoo and then deserialize the JSON with JSON.net. Then I'll be setting these properties where anyone listening such as my Xamarin.Forms user interface can automatically update and respond. Now if I wanted to build out a little user interface, I'd simply say add new item and then I'd see Xamarin.Forms XAML page. Adding that in immediately enables me to add things such as stack layouts, labels and dive in with rich intelligence to add other things maybe such as an activity indicator. I accept that is enabled to true and I'd be on my way. Now I already built out the user interface here and let's take a look at the stocks page. Here our core is a stack layout with a label and an entry field that is bound to our symbol two way. So whenever it updates in the UI, my code behind will be updated as well. I have a button with a green background and white text with a get quote command bound automatically and I'm binding labels here to company in your range. So whenever my view model updates, my UI will react as well. One thing that's unique about Xamarin.Forms XAML is that we have the ability to not only add styles, behaviors and triggers, but also do platform specific property setting. So here for this label of the quote display, we have a different font style for Android, Windows, phone and iOS. Let's take a look and see what this looks like with our XAML in place. Here we are inside of Android with the Android look and feel going out, getting the quote. If I pull up Windows phone, same thing with all native Windows phone controls. And of course over here on iOS, again getting the quote. All 100% shared code from a business logic backend to my front end all in XAML powered by Xamarin and Xamarin.Forms. So that's Xamarin.Forms, part of the Xamarin platform enabling you as a C sharp.NET developer to build out native iOS, Android and Windows applications all in Visual Studio. But of course Xamarin is your complete mobile solution especially when it comes to testing. We have Xamarin test cloud and Xamarin UI tests enabling you to build out automated user interface scripts for any of your iOS or Android applications. You can run those scripts locally on the simulators or devices that you have or ship them to our test cloud where you can run those scripts on thousands of physical iOS and Android devices and get reports back nearly immediately. What about after you ship your applications to the stores? How do you get feedback from your users or crash reports? Well, that's a Xamarin insights comes in with just a single lot of code in any of your iOS, Android or Windows applications you immediately get feedback for managed native crash reporting and any analytics that you wanna add. And of course we have plenty of documentation for learning the entire Xamarin platform. We also have Xamarin University which is live interactive instructions and classes with Xamarin University instructors. You can go for maybe knowing nothing about mobile development or even C sharp to a fully Xamarin certified developer. You can get started with Xamarin today at xamarin.com and downloading and getting started with the free trial and to learn more about Xamarin forms head over to xamarin.com slash forms and thank you so much.