 Hello, hello, hello. Dan actually got a wonderful laugh out of me. I was supposed to be quiet, but when he said monkeys that type really fast, that speaks to the Xamarin monkey, right? So welcome. We're going to be talking about how Xamarin Forms is more productive and beautiful than ever. So I'm glad that you've joined us. I need your help. I am David Ort now, Principal Program Manager for Mobile Developer Tools, covering the Xamarin Mobile STKs and all of our tooling, or with our tooling. There are many of us that work on this product, and I'm really excited today to share with you the cool new stuff that we've been doing. So first of all, I want to hear from you. So I've been live streaming once a week for quite a while now on Twitch, and I find that people tune in from all over the world. So we're talking about the weather today, and we've talked a lot about the weather in Redmond. But where are you? Where are you watching from? Go to your Twitter client, whatever your favorite Twitter client is, use the .NETConf hashtag, and tell me where you're watching from. Are you in North America? Yes, I went back to the slides. Sorry. Are you in North America? Where are you? You're clearly supposed to be working right now if you're in North America. But this is work. This is education for what you do on a day-to-day basis, so that's all good. How about South America? And of course, North America, I included Central America. I'm going to skip over something. How about the great continent of Africa? I know that we have a lot of people that will tune in from Africa when I stream, so it's always great to see people from that region of the world. Xamarin is such a global community. It's really awesome. It's one of the things I prize most about working for Microsoft, is being able to interact with people all over the world. So how about Europe? Where are you coming in from? I'm looking for some tweets here. Come on, hit me with some tweets. All right, we've got one in St. Louis, my hometown. Kerala, India, Norway, Olympia, Washington, not too far away. Mexico, Belgium, sweet. All right, Oceanside, California. I don't know exactly where that is, but it's Oceanside, so I need to go visit. That sounds amazing. Awesome. Well, and the land down under. We cannot forget the land down under, right? Because I know that we've got a strong vibrant.net. Xamarin community, they're passionate about the technology, trying to get more and more adoption where they work, and we wanna help support them as best we can. One of my favorite Twitch streamers, Lil Teaser, is in Australia. So let's talk about the weather. So as I mentioned, if you saw the keynote this morning, I believe it was Glenn that said, Redmond's the only weather that matters. And given where you are in the world, I imagine you think not that the weather all over the world matters. So let's look at how we can address this. I'm gonna jump over to my Visual Studio, let my Android emulator resize. All right, we're good, we're good. So this is the demo you saw from James Montemagno earlier during the keynote. Again, same code. If I zoom in here, if I know my keystrokes, I don't know my keystrokes. Yes, oh, I do, look at that. All right, so same solution, it's got all the blazer, the server-side stuff, all that here, and then I added some stuff, right? Of course, I have to add my stuff. So this is the same project running, and you've got Seattle here, but I've done some things, of course. I wanna show you what's new and great in Xamarin Form. So first of all, let's start with Shell. So what Shell provides you is a new container for your applications to make them more flexible, make it easier for you to create the flyout menus, the tab bars, whether they're at the bottom or the top, as well as some navigation services, which we'll dig into here in just a minute. But the first thing I need is to be able to get to that side menu. So I'm gonna come on down here and I'm gonna use another new thing that we have in Xamarin Forms. Actually, as I'm looking at this, there's at least two new things here in Xamarin Forms. So let me go KU. So now I'm adding an image button, I'll go ahead and save that, and it'll update. And now I've got a button over here that I can open my menu. So what are those new things that I just mentioned? Well, first of all, we now have an image button. Yay! Of course, before you could have used an image, you could have used a button and you could have potentially come up with something that met your design needs, but there's a good reason to explicitly have an image button for accessibility reasons, for findability so that you can find the thing that you need, and it behaves slightly differently. The other new thing that I used is the font image source. So this is actually font awesome, and I have a static class here that brings in the Unicode special characters that I need to be able to use that. And then I can come in here and pick something else. Ooh, what do we have here? Air freshener. I don't know why I would ever use an air freshener, but it's important to have, right? So you can change that out, and then of course I can do it like this. Now, I could have done this. Because what I've actually done, and I'll show you, is up here at the top, I have my shell, and I can access this from anywhere in my application and control how I want my app shell to behave. So at this point, I have hidden the nav bar, but I can go ahead and flip that back to true, and it'll bring it back in. But it's not designed for this. The beautiful design that James pulled together for this really doesn't work with that, so that's why I decided to hide it. Now, with it available, that menu works out of the box. You don't have to go add a button like I just did, but I wanted to, because hey, I wanted to show off. So I'll go ahead and hide that again, and let's look at the shell file itself. So what's going on here? So let's doot, doot, doot, move this out of the way. Go away, there we go. All right, so super simple. I've got those three flyout menu items that you just saw, if I open that back up again. And so I've got my flyout menu for the Seattle and then St. Louis, which we're going to next, my hometown, and then we've got the world map. And then, so essentially it's just a shell file, nothing super magic here, and then I start declaring what it is that I want. Three flyouts, and these are the pages that you should go to. Note that I am using data templates. This is a good practice to get into, because it allows things to load upon demand, and you don't have to worry about things eagerly loading and slowing down your app startup time, so it's a good practice to get into. All right, let's see, where do we want to go next? So I think we need to go to St. Louis, and let's correct this. Seattle is the only weather that matters thing. So it looks like it's currently 78 in St. Louis. I already did the view model magic to make that happen, which is not really magic, it's just a view model. So let's go up here first to, where does it say Seattle? Let's correct that. Of course, we don't want just one location. I saw Dan in the previous session did a very nice job of showing how to upgrade the app to support multiple locations. We'll go ahead and bind that location, so we can get St. Louis coming off of our view model. Excellent. And then he has a space needle here. We don't have a space needle in St. Louis. What do we have in St. Louis? Well, clearly we have the arch. So I have an image here of the St. Louis skyline that shows off the arch. Very beautiful. Woo-hoo, love that. But really, I would be remiss not to include this. So St. Louis currently is the proud possessor of the Stanley Cup. So that's important to know. It keeps showing up all over town in St. Louis. So now I think we have a proper, right? We have a proper St. Louis representative map or weather page there. But let's go a little bit further and let's show you a couple of other new things that Xamarin.Forms has for you now. So I've just gone to this page and you would be forgiven if you thought that the city list page is utilizing a list view. It is not a list view. This is collection view. Collection view we've been previewing for several versions. It's now in, we're shipping Xamarin.Forms 4.3 pre-release. And so you can use it today. And when 4.0 goes stable, we expect to call this a stable release. We're vetting the last of the bugs and making sure that the features meet that MVP bar for shipping this. I think it's really, really useful. So let me show you a few things that we have going on here. So first of all, here is my collection view. And the syntax is very similar to what you would be experiencing or are used to if you use the list view. This is built on all modern controls, UI collection view on the iOS side. I believe it's recycler view on the Android side. And we also have a UWP implementation based on that control. So I have this inside of a grid. I have my item source bound here. It's a flat list of cities, as you can see. I have declared a linear layout. Now if I remove that, I believe it actually defaults to a linear layout. But I wanted to add the item spacing to it, which is why I declared it so that I could add this nice spacing. Now, something else that you can do is it can do horizontal orientation. Woo-hoo, and the crowd goes wild. Of course, now my design starts to look a little funky. So let's clean this up a little bit. We'll give the columns a width so that they spread out a bit. That didn't really do all the magic that I wanted, but we're okay. So let's look at a couple of other layouts. So in addition to a linear layout, we also have a grid layout. And then within the grid layout, I can declare how many grid items I wanted to have. So I'm gonna start with two. And let's see, orientation. I'll go ahead and stay with vertical. And I believe I have both vertical, yep, vertical spacing and horizontal spacing. Very nice. Save that. All right, we're looking a bit better. Let's see here. I think I wanna make this a little bit wider. Oh, you know what? I bet you if I comment that back out, that'll make it a little bit better. But let's do this. Let's go to a horizontal. And look at a couple of other looks here. So of course, what I'm doing now is this is all hot reload, XAML hot reload, which is in Visual Studio 2019, 16.3, which ships today, as well as Visual Studio for Mac 8.3 shipping today. And so you can go experience this. Make sure you go to your preferences, tools options or file preferences, and go turn on the XAML hot reload option. Make sure that you're also using Xamarin Forms 4.1 or newer. Of course, you're gonna wanna experience all of this goodness, so you already be on 4.3 pre, pre two. So that'll be no problem for you. All right, let's do a few more things here. So I'm inside my data template, and I'm just manipulating things inside the data template to see what all I could possibly do here with this. And you'll notice that I am getting horizontal scrolling here. Now let's see, let me fix this. How did I have that layout before? So I've got a row and a row. Yep, yep. Vertical end bottom. So I think I just need to make my row taller and get a little more space there so that my label is at the bottom and my, yep. There we go. So that's looking a bit better. And then if I do this, I wanna show you what it looks like. I created this cool color converter to kinda spice things up and bring some color to the picture here. So let's uncomment this puppy. So what this is is I'm just binding to the current weather temp. So based on what the temperature is, we're gonna have a color that represents that temperature. And then I have a little converter here, temp to color converter, no big deal. Just at this point, it's not doing the fancy math, which would be awesome to do with the hexadecimal colors. It's just using a big old honkin switch statement. But hey, it's the job done. That's the kind of developer I am. I'm definitely in the get the job done camp. And then we save this, and now you see we're starting to get some pretty sweet colors. Yay. And you can do a lot of things with this. Of course, it supports commanding, supports pull to refresh. And actually, and I've seen this come up in some of our collection view and other challenges, is where is the pull to refresh? I need a pull to refresh. Well, refresh is a reusable control. So it's actually its own thing. So you would set it up like this, and then up here on the refresh view, you can tell it what your command is. And I'm not sure that I have a refresh command, but let's check it out. Yeah, I do have a reload command. Woohoo. So now if I save this, we're in dangerous territory. I've never actually tested this. Oh yeah, see, I totally goofed it up. But I have another, oh, there's the refresh view though. There you go. Probably need to make that bigger. Oh, that's where it is. That's what it is. Do this. Uncomment that puppy. Make this thing like 400. Yeah, we're in good shape. So refresh view is pretty awesome. So that's it for the demos. I've got a ton of slides to get through. And how much time do I have left? Ooh, I need to hustle. All right, there's just so many good things to celebrate. So we'll go ahead and kill that puppy. And let's get on over here. So I wanted to recap some of the announcements from this morning in case you missed it, or just in case you needed a reminder. Here are the links for XAML Hot Reload, as well as the Hot Restart that we announced, a private preview of this morning. I have used the Hot Restart, and it is pretty magical. I think it's going to blow your mind. Now it is a private preview, so it's very early bits, and things will continue to mature at a very nice pace. Same thing with Hot Reload. Very nice to see these productivity things improving quickly. And then for the latest SDKs, we have iOS 13 is out, Xamarin Android 10 is out, as well as Xamarin Forms 4.3 pre-2. So all those good things for you to go play with today. Oh, I should probably make my slides full screen. Ooh, I can do this. All right, so let's dig into a few other things after I give a quick plug. Come on, you can do it. Presenter mode, presenter mode. All right. We have quite a few other awesome sessions coming up. These right here, take a picture of that, take a screenshot of that. Excellent sessions coming up. They will go deeper into a lot of the things that I'm kind of skirting over the top of. So if you want to know more about, especially those productivity tools, Maddie Lejeure's session on day three, all these sessions are going to be amazing. John Douglas, they're all going to be amazing. So check them all out. All right, beautiful UI. Let me show you some things that are just pretty mind blowing. So I got to give a huge shout out here to former Xamarin University instructor and current MS Learn awesome guy, Kim Philpots, down in Australia. On every Friday, he does a Twitch stream where he takes a different design from Dribble and creates these gorgeous, gorgeous things in just a few hours using just Xamarin forms and the community of plugins that are available. So this is a trend I'm seeing across the Xamarin community that people are creating just amazing things. This is the maturity of the platform and where we've gotten to it's just awesome. So how does Xamarin deliver this awesome? Here's a quick recap for anyone that it might be new to Xamarin. This is all .NET. We create bindings to the iOS, Android and any other .NET framework for the runtimes. We have shared native UI, which is the Xamarin forms layer, as well as Skiasharp and different things like that that can share the same UI across platforms. And then all the shared logic. So you get 100% access to native APIs, native experience. You can be sharing tons of code depending on how you architect your application, all with .NET. It's an awesome promise. And again, we love to celebrate this every year, but iOS 13 just shipped. Matter of fact, I believe there was another release late Friday from Apple and our iOS team is doing an amazing job supporting that so that on day one, customers such as seeing AI, as you see here in the tweet, can be utilizing dark mode and all the other iOS 13 features for access to the store on day one. That's a proud tradition we have. We're excited to be able to support our customers in doing that. And I know of several other customers that I've worked with directly to help make sure that their apps for their high profile, very important needs are there on day one. And so the platform itself is mature and growing. We've got all these controls and so many more. There is a swipe view that's about to be merged. We've got camera views coming. We've got media elements coming. We've got radio buttons coming, but we've recently added also the image button, the check box, the carousel view, collection view. You know, it's just, it's fantastic. And it's not, it's not us saying, oh, we've got to ship feature, feature, feature, feature. It's us listening closely to you about what you need from the platform to be successful building your apps. And that is what's driving us delivering these things. To the point where you're telling us, oh, it's very rare. I have to create something custom on my own. I just pull what's already shipped in the box and use that. So that's fantastic. And then the great ecosystem of providers, vendor providers, and then the third party ecosystem of, you know, you basically in the community, shipping things that are useful to you to help others is a huge tremendous help. Some really cool stuff on here and the icons start to make you hungry when you start seeing stacks of pancakes. I know that James and his demo showed off the pancake view. It's in this code as well. It's just awesome. And of course, all the wonderful enterprises, companies that bankon.net and Xamarin and have great success with it. So I want to give a big shout out to our contributors. Last year at this time, actually this is a slide from my presentation last year. We celebrated all the Xamarin forms contributors and I'm here to say that we have expanded that and we are going to be sending out wonderful gifts to all of the Xamarin contributors from docs to essentials to iOS and Android to forms, Ski is sharp, all the things that we maintain, we really appreciate your collaboration with us, bringing us your ideas, as well as your help and your love. So look forward to that. I will be shooting out a request for emails. And then I wanted to highlight a few things from the community. This was in February, a ton of awesome blog posts from you. I had nothing to do with this. We had nothing to do with this. This is the community that is just rising up with excitement about what you can do today with Xamarin forms. And then in July, we have the Xamarin UI July, another community led thing. And you can see these screens are just gorgeous. I'm drooling here. It's crazy good. And I wanted to give a shout out to all of those who started streaming. I remember when James Montemagno and Jeff Fritz were the only streamers out there doing anything.net. And here we are. It's just growing. It's exploding. It's very cool. Check out this link. I got a list of those that I was aware of. If there are more, let me know. All right. I have just a few more things to highlight for you from Xamarin forms that I've already mentioned. So I'll just touch on them briefly. Shell, the easiest way today to be starting off your applications. You don't necessarily need to migrate your existing stuff, but for new applications, this is a great quick start for you that's extremely flexible. You can see just how simple the code is to do a fly out menu, to do the bottom tabs, and then of course to do top tabs if your app needs that as well. Very little code, very explicit about what it is that you want. And then that navigation service that I mentioned, when you wanna go from a list page to a detail page, now it's as simple as using that global navigation service that's available everywhere. You don't have to worry about it not being there. And you can even pass in query string parameters. So you pass in that city ID and then on the receiving page, the detail page, you attribute the query property to make sure that that is applied to the public property of your binding context, whether that's the view model or the page itself. So very easy to use. I didn't mention this much today, but visual, if your goal is to have the same look and feel between iOS and Android, visual is a great start for you. Material design component, you can ship with all these components out of the box so that you don't have to spend time tweaking. And then of course, slide. I showed you all these wonderful things coming from CollectionView. I would love to see what you're working on. And then right now, we're actually running a carousel view challenge. And these are some of the actual contributions from the community, from you that what you're able to do with the current collection view, or the carousel view, pardon. So this is still open. There is swag on the line. You could be getting that monkey. I don't think it'll help you type very quickly, but it'll look great on the mantle and you can make sure that your children don't steal that monkey. So please enter that. It expires end of the day, Wednesday. You can check the blog for all the details on that if you just go to the dev blog, Xamarin. And with that, I sped through to the end for questions.