WEBVTT

00:00:03.000 --> 00:00:08.000
>> Hello, hello, hello! welcome to wednesday, microsoft build 2018.

00:00:08.000 --> 00:00:13.000
Everybody having a good time? yes. This is the part where i walk to

00:00:13.000 --> 00:00:15.000
The front of the stage and then i can't see anybody because of

00:00:15.000 --> 00:00:17.000
The lights, so you are there, yes, wave, yes

00:00:17.000 --> 00:00:26.000
So you are here to hear what's new in xamarin 3-point 0e.

00:00:26.000 --> 00:00:29.000
It's been a long time coming. I'm excited to bring it to you,

00:00:29.000 --> 00:00:34.000
Excited to share not only what's in that, but celebrate things

00:00:34.000 --> 00:00:37.000
That are happening and then at the end of the session i will

00:00:37.000 --> 00:00:41.000
Show the roadmap and where we are looking for the future.

00:00:41.000 --> 00:00:44.000
Sound good?  i am david or thenow, the senior program

00:00:44.000 --> 00:00:47.000
Manager for xamarin forms and i have been xamarin and microsoft

00:00:47.000 --> 00:00:51.000
For a little over a year now and it has been an awesome ride.

00:00:51.000 --> 00:00:55.000
I have met many of you, and so that means that the rest of you

00:00:55.000 --> 00:00:59.000
Need to reach out to me, sweet at me, email me because i

00:00:59.000 --> 00:01:01.000
Absolutely want to hear what you are doing, what are you building

00:01:01.000 --> 00:01:03.000
With xamarin forms?  what do you need to build with scam rine

00:01:03.000 --> 00:01:08.000
Forms?  what do you want it to be doing for you?  so i can

00:01:08.000 --> 00:01:10.000
Understand that better, bring the intel back to the team and

00:01:10.000 --> 00:01:12.000
Also what do you need to know, what am i not sharing that i can

00:01:12.000 --> 00:01:15.000
Share with you so you can make decisions you need to make.

00:01:15.000 --> 00:01:19.000
Before we dive in the 3.0 Features, i want to docy recap

00:01:19.000 --> 00:01:27.000
69 Awesome stuff we did in 2017. It was a good year and i think

00:01:27.000 --> 00:01:31.000
It's worth remembering sneeze things.

00:01:31.000 --> 00:01:35.000
We released our first public roadmap.

00:01:35.000 --> 00:01:42.000
Has anybody seen the roadmap. It's on github.

00:01:42.000 --> 00:01:46.000
We now host the public roadmap and you request get an

00:01:46.000 --> 00:01:49.000
Indication of not only the features we are working on,

00:01:49.000 --> 00:01:53.000
Features we are planning to work on and anything that gets cut,

00:01:53.000 --> 00:01:57.000
We will show few we cut it as well as when we expect to ship things.

00:01:57.000 --> 00:02:01.000
So over the course of the year, we were saying this part of the

00:02:01.000 --> 00:02:06.000
Year we will start shipping these things, somewhere in these quarters.

00:02:06.000 --> 00:02:08.000
Now we are getting a little bit closer to when we actually

00:02:08.000 --> 00:02:13.000
Expect to ship things, so this is a big priority for us to be

00:02:13.000 --> 00:02:16.000
More transparent and to create more visibility for you into

00:02:16.000 --> 00:02:21.000
What we are doing. And i hope you like that.

00:02:21.000 --> 00:02:27.000
So in that same vain we vane we

00:02:27.000 --> 00:02:30.000
Have moved our work to github, now issues and projects are

00:02:30.000 --> 00:02:33.000
Hosted on github. For issues, all of your bug

00:02:33.000 --> 00:02:36.000
Files should be going there, as well as enhancement requests.

00:02:36.000 --> 00:02:39.000
This is also where we are now discussing new futures so when

00:02:39.000 --> 00:02:41.000
We have a proposals, a speck we want to share with you, that's

00:02:41.000 --> 00:02:48.000
Where it's going. You can be filing your

00:02:48.000 --> 00:02:50.000
Enhancement requests there as well.

00:02:50.000 --> 00:02:55.000
We provide lots of guidance for that. So, again, lots of transparency,

00:02:55.000 --> 00:03:00.000
Lots of setting expectations and hopefully that's well received.

00:03:00.000 --> 00:03:04.000
The feedback so far has been very positive when we announced

00:03:04.000 --> 00:03:09.000
On twitter because that's where most announcements happen.

00:03:09.000 --> 00:03:13.000
That was very well received. So 33 releases last year.

00:03:13.000 --> 00:03:15.000
That's quite a few. Sixteen of them were pre-releases, 17 stable

00:03:15.000 --> 00:03:21.000
Releases. That's a lot of releases and i

00:03:21.000 --> 00:03:25.000
Think that that's awesome, however, what i heard from you

00:03:25.000 --> 00:03:28.000
And we have been hearing from you is that's grit, but we want

00:03:28.000 --> 00:03:31.000
To know when and we want a predictable cadence.

00:03:31.000 --> 00:03:35.000
Would you agree?  i kind of primed you for that.

00:03:35.000 --> 00:03:41.000
So what we are now working towards is a six-week cadence.

00:03:41.000 --> 00:03:43.000
So this week we ship 3.0. Has anybody downloaded.

00:03:43.000 --> 00:03:45.000
You have been busy. You have been at build.

00:03:45.000 --> 00:03:51.000
Some of you have. Some of you have, which is

00:03:51.000 --> 00:03:56.000
Awesome, and so six weeks from today, not today, ish, right,

00:03:56.000 --> 00:03:58.000
Because this is all etched in jell-o, all kinds of things

00:03:58.000 --> 00:04:01.000
Could happen. So even on the roadmap we try to

00:04:01.000 --> 00:04:05.000
Indicate this is our best guess of how things will happen, but

00:04:05.000 --> 00:04:09.000
We are not fully in control of everything so bear with us, but

00:04:09.000 --> 00:04:12.000
Six weeks from today, you can be expecting the next release.

00:04:12.000 --> 00:04:17.000
I will talk to you a little bit about what will be in that release.

00:04:17.000 --> 00:04:21.000
Highlights of features from last year, native forms, native forms

00:04:21.000 --> 00:04:27.000
Allows you to take forms content pages and embed them into scam

00:04:27.000 --> 00:04:31.000
Rine ios, scam rine android, uwp or any other back end that has

00:04:31.000 --> 00:04:36.000
An understanding of xamarin forms. What this means is if you don't

00:04:36.000 --> 00:04:39.000
Need the full weight of xamarin forms, you just need the

00:04:39.000 --> 00:04:42.000
Simplicity of a ui, you want to bring that into the application,

00:04:42.000 --> 00:04:49.000
You can do that here. So what you are looking at on

00:04:49.000 --> 00:04:53.000
The screen is the maintenance app from the smart hotel 360 reference app.

00:04:53.000 --> 00:04:57.000
We showed this off at connect. It's up on github.

00:04:57.000 --> 00:05:00.000
This is a xamarin ios app. On the left side it's a list,

00:05:00.000 --> 00:05:07.000
It's a ui table view controller and when you tap one of those

00:05:07.000 --> 00:05:11.000
Rows it will call to a content page and say give me the content

00:05:11.000 --> 00:05:16.000
Page and it uses a helper method.Create view controller.

00:05:16.000 --> 00:05:22.000
It pushes that onto the ios stack. So this is a way for you to

00:05:22.000 --> 00:05:25.000
Embed xamarin forms into your ios android native applications.

00:05:25.000 --> 00:05:28.000
Who is using this?  i know several people have been using it.

00:05:28.000 --> 00:05:32.000
I'm seeing hands. Pretty awesome.

00:05:32.000 --> 00:05:38.000
So taking that a step further because we wanted to blow some

00:05:38.000 --> 00:05:41.000
Minds, we combine native forms with dot

00:05:41.000 --> 00:05:45.000
.Net embedding. So this takes .Net and compiles

00:05:45.000 --> 00:05:48.000
It as a native objective c ios framework target.

00:05:48.000 --> 00:05:53.000
You bring the framework into your objective c application,

00:05:53.000 --> 00:05:58.000
And you can utilize it just like you would do anywhere else, so

00:05:58.000 --> 00:06:01.000
What you are seeing on the screen here is objective c.

00:06:01.000 --> 00:06:06.000
This is the kick starter open source application on github.

00:06:06.000 --> 00:06:08.000
And we are bringing a .Net embedded page into it.

00:06:08.000 --> 00:06:12.000
What you see right here on the screen is a little helper that

00:06:12.000 --> 00:06:15.000
We are doing and all that helper is doing behind the scenes is

00:06:15.000 --> 00:06:18.000
Newing up that content page, calling create view controller

00:06:18.000 --> 00:06:21.000
And adding it to the native ios stack right within objective c.

00:06:21.000 --> 00:06:24.000
This works with objective c, swift, java, pretty amazing.

00:06:24.000 --> 00:06:28.000
You can use xamarin and xamarin forms pretty much anywhere.

00:06:28.000 --> 00:06:31.000
Cool. All right.

00:06:31.000 --> 00:06:33.000
Some other stuff we did last year, performance.

00:06:33.000 --> 00:06:36.000
So we hear a lot about what is it going to get faster?  when is

00:06:36.000 --> 00:06:43.000
Run time going to get faster and a lot of times that's primarily

00:06:43.000 --> 00:06:46.000
Focused on one platform. Can you name the platform?

00:06:46.000 --> 00:06:50.000
Android. That's right.

00:06:50.000 --> 00:06:52.000
It's well known. .Net standard 2.0 Brings nice

00:06:52.000 --> 00:06:55.000
Performance benefits. Mostly i have been seeing that

00:06:55.000 --> 00:06:59.000
Within the project systems, your compiles times, project unfold

00:06:59.000 --> 00:07:02.000
Times are getting faster but those are things you are doing

00:07:02.000 --> 00:07:06.000
On a regular basis so it's nice to see those things improving as well.

00:07:06.000 --> 00:07:11.000
Compile bindings we released last year, fast renderers, so

00:07:11.000 --> 00:07:15.000
Label, button and eu78 math are the three controls used most

00:07:15.000 --> 00:07:21.000
Often in a list view, so we have made fast renderers for those,

00:07:21.000 --> 00:07:24.000
For those of you who may not be familiar with a fast render when

00:07:24.000 --> 00:07:28.000
You enable that in your initialization of xamarin forms

00:07:28.000 --> 00:07:32.000
It provides a renderer that has been refactorred to remove the

00:07:32.000 --> 00:07:37.000
Rapping class. By doing that so you are

00:07:37.000 --> 00:07:42.000
Removing one layer of view from your stack which makes

00:07:42.000 --> 00:07:45.000
Everything faster, because nested ui is slower ui.

00:07:45.000 --> 00:07:49.000
Flatter ui is faster. Layout compression is the 15eu78

00:07:49.000 --> 00:07:53.000
Focus along those lines. If you have a layout that is

00:07:53.000 --> 00:07:56.000
Simply there to be able to put something in place, but you are

00:07:56.000 --> 00:07:58.000
Not controlling it, you are not changing background colors on

00:07:58.000 --> 00:08:01.000
It, there is no images in the background, then you can mark

00:08:01.000 --> 00:08:03.000
That as headless. You don't need that to be

00:08:03.000 --> 00:08:06.000
Rendered into your view and we will remove it for you.

00:08:06.000 --> 00:08:08.000
That will then flatten your ui which can make it more

00:08:08.000 --> 00:08:12.000
Performant. You need to use the feature

00:08:12.000 --> 00:08:16.000
Judicially because if you use it in the wrong place, you can see

00:08:16.000 --> 00:08:20.000
A negative impact, but used in the right way, it's amazing.

00:08:20.000 --> 00:08:24.000
Start up optimizations, a lot of milliseconds here, milliseconds

00:08:24.000 --> 00:08:28.000
There, cleaning up code paths so as a big feature there is

00:08:28.000 --> 00:08:31.000
Nothing really to call out, but we did quite a bit of work

00:08:31.000 --> 00:08:36.000
Diving deep in there and we investigated things in terms of

00:08:36.000 --> 00:08:41.000
Where we are doing reflection from assembly scanning.

00:08:41.000 --> 00:08:51.000
In general it has gotten faster, recently, we have done work to

00:08:51.000 --> 00:08:55.000
Make sure that build times with xamalc got faster, so in the

00:08:55.000 --> 00:09:00.000
Smart rep, we were able to get the build times from 8 seconds

00:09:00.000 --> 00:09:08.000
Down to 1 second.

00:09:08.000 --> 00:09:13.000
>> . So encouragement to use the

00:09:13.000 --> 00:09:15.000
Latest and greatest stuff. Community contributions, i

00:09:15.000 --> 00:09:18.000
Wanted to celebrate that. So if you are a community

00:09:18.000 --> 00:09:21.000
Contributor to xamarin forms, would you take a step up.

00:09:21.000 --> 00:09:24.000
Would you stand on your feet so we could recognize you real quick.

00:09:24.000 --> 00:09:27.000
Nobody is going to do it. Frank is a contributor.

00:09:27.000 --> 00:09:31.000
You have pred something. Let's give these people a round

00:09:31.000 --> 00:09:35.000
Of applause. We are actually being live

00:09:35.000 --> 00:09:37.000
Streamed now as well so a bigger round of aflaw for all of the

00:09:37.000 --> 00:09:42.000
People watching. Yes.

00:09:42.000 --> 00:09:45.000
So, you know, the maintainers of the project are like, hey, why

00:09:45.000 --> 00:09:48.000
Don't you send a pr, and it can seem like they are just lazy.

00:09:48.000 --> 00:09:51.000
They just want us to do the work for them.

00:09:51.000 --> 00:09:55.000
Here is the deal, scam rine forms is awesome and amazing but

00:09:55.000 --> 00:09:58.000
We need everybody to contribute so we get to celebrate the

00:09:58.000 --> 00:10:01.000
Wisdom of the entire group and the knowledge and power of the

00:10:01.000 --> 00:10:06.000
Entire group so it's awesome. Any time that you, and you may

00:10:06.000 --> 00:10:09.000
Think, hey, i did a survey recently where i asked people

00:10:09.000 --> 00:10:12.000
What have you written custom in the past that xamarin forms

00:10:12.000 --> 00:10:16.000
Didn't do for you, and i asked the question have you sent a

00:10:16.000 --> 00:10:19.000
Pull request for that work. When they said no, because

00:10:19.000 --> 00:10:21.000
Almost all of them said no, i asked why.

00:10:21.000 --> 00:10:24.000
What can we do to help you feel more comfortable sending pull requests.

00:10:24.000 --> 00:10:27.000
The number one thing, well, there are probably two topics,

00:10:27.000 --> 00:10:32.000
The number one was i was too business before. I did this for work and then i

00:10:32.000 --> 00:10:34.000
Was done. The second thing was i

00:10:34.000 --> 00:10:42.000
Could i didn't know how to do xyz.

00:10:42.000 --> 00:10:48.000
Som up to the disability hub, the enhancements board, and you

00:10:48.000 --> 00:10:51.000
Will find there are people you can collaborate with and broaden

00:10:51.000 --> 00:10:55.000
That thing and somebody will supply the missing pieces and we

00:10:55.000 --> 00:11:01.000
Will get the pull request in and it will make the platform sound better.

00:11:01.000 --> 00:11:04.000
Sound good?  last year we had 133 contributors.

00:11:04.000 --> 00:11:07.000
So that's amazing. Some of the major contributions,

00:11:07.000 --> 00:11:12.000
Gdk sharp is now a back end. So you can hit raspberry pis,

00:11:12.000 --> 00:11:16.000
Linux platforms, mac os is in, major contribution, wpf is now

00:11:16.000 --> 00:11:20.000
In as well, so these are all in different states, so i want to

00:11:20.000 --> 00:11:22.000
Call your attention to the github which i will show you a

00:11:22.000 --> 00:11:28.000
Little bit. Here is something interesting

00:11:28.000 --> 00:11:31.000
That daniel seigal, one of the prism maintainers has done, he

00:11:31.000 --> 00:11:34.000
Has an extension for prism, that creates this app on app center.

00:11:34.000 --> 00:11:36.000
With you want to take a look, you could hit the alpha channel

00:11:36.000 --> 00:11:38.000
For the extensions. And you can see xamarin forms

00:11:38.000 --> 00:11:40.000
Beingized in extensions. It's not just on the mac as you

00:11:40.000 --> 00:11:42.000
See here, half veer ruiz is doing this with his extension

00:11:42.000 --> 00:11:44.000
Which analyzes the code of your application to tell you how much

00:11:44.000 --> 00:12:00.000
Of your code is being used in the shared part and in your

00:12:00.000 --> 00:12:03.000
Xamarin forms code and how much is being written in the platform

00:12:03.000 --> 00:12:08.000
Specifics area of the application. All of this ui, all of xamarin

00:12:08.000 --> 00:12:13.000
Forms ui used to build an extension for visual studio on windows.

00:12:13.000 --> 00:12:16.000
I think that's inspirational, i think that's pretty amazing and

00:12:16.000 --> 00:12:18.000
I asks javier in particular, what was it that we did?  what

00:12:18.000 --> 00:12:23.000
Was it that we released that made this possible?  now i'm

00:12:23.000 --> 00:12:34.000
Seeing more and more people do this. Anybody using m fracturer for

00:12:34.000 --> 00:12:42.000
Xaml power tool s.

00:12:42.000 --> 00:12:47.000
If you want more information check out the wiki.

00:12:47.000 --> 00:12:49.000
You will see that some of them are early preview, some are more

00:12:49.000 --> 00:12:52.000
Stable. In terms of core team, microsoft

00:12:52.000 --> 00:12:57.000
Team, our focus is uwp that's where we are going to spend the

00:12:57.000 --> 00:12:59.000
Majority of our time, but these contributions are coming in hot

00:12:59.000 --> 00:13:04.000
And heavy from the community and you guys are picking this up and running with it.

00:13:04.000 --> 00:13:08.000
We will do our best to support you, but if you want to know

00:13:08.000 --> 00:13:12.000
More, hit the report links, they will give you this control is

00:13:12.000 --> 00:13:15.000
Implemented, this properly is implemented, here is where you

00:13:15.000 --> 00:13:21.000
Can contribute, you know, flesh out the rest of these back ends.

00:13:21.000 --> 00:13:23.000
So lots of good information there.

00:13:23.000 --> 00:13:28.000
And then on the inspirational note, i wanted to call attention

00:13:28.000 --> 00:13:32.000
To, i have already mentioned frank's name twice.

00:13:32.000 --> 00:13:38.000
It's dark, i can barely see you. He has put together ui.

00:13:38.000 --> 00:13:40.000
Who has played with ui. This is using two ways of doing

00:13:40.000 --> 00:13:46.000
It. I asp net core server on one

00:13:46.000 --> 00:13:50.000
Side and web assembly on one side. One uses web sockets one is

00:13:50.000 --> 00:13:57.000
Doing communication in the browser. This is a xamarin forms sample

00:13:57.000 --> 00:14:00.000
App running in the web with actually, and i inspected html,

00:14:00.000 --> 00:14:06.000
I'm 20 plus years web developer, it's a good looking html.

00:14:06.000 --> 00:14:11.000
So good job, man, good job, frank. Yes.

00:14:11.000 --> 00:14:15.000
So when i see stuff like this and when you share my your

00:14:15.000 --> 00:14:18.000
Projects and what you are doing with scam rine forms i am in you.

00:14:18.000 --> 00:14:22.000
I want to be part of a platform that is doing things that make

00:14:22.000 --> 00:14:26.000
People scratch their head and go, wow i didn't know that was

00:14:26.000 --> 00:14:30.000
Possible or i didn't think that could be done.

00:14:30.000 --> 00:14:32.000
So this probably won't be something you use in all of your applications.

00:14:32.000 --> 00:14:39.000
It may not be something all go back to your boss and say we

00:14:39.000 --> 00:14:43.000
Should do this, it's certainly early, but hopefully it

00:14:43.000 --> 00:14:48.000
Indicates to you the vibrancy of the platform and what people are doing.

00:14:48.000 --> 00:14:52.000
A quick note on xaml.

00:14:52.000 --> 00:14:58.000
Here is the latest news, xaml standard, this is where we are

00:14:58.000 --> 00:15:02.000
Looking at the common dialect of xaml between windows desktop

00:15:02.000 --> 00:15:04.000
Xaml, and xamarin forms xaml. Xamarin forms though i have

00:15:04.000 --> 00:15:07.000
Showed you several areas where the community is taking it it to

00:15:07.000 --> 00:15:14.000
The desktop, it's primarily a mobile platform. So where you see the overlap is

00:15:14.000 --> 00:15:17.000
Where we want to align as best we can the dialects.

00:15:17.000 --> 00:15:20.000
So from talking to customers and talking to everybody under the

00:15:20.000 --> 00:15:24.000
Sun, we have determined that this is what was best for us to

00:15:24.000 --> 00:15:27.000
Do, and so we are glad to announce the release of visual

00:15:27.000 --> 00:15:31.000
State manager, which is available now in xamarin forms 3.0.

00:15:31.000 --> 00:15:35.000
We are working towards the standardization of the tags, and

00:15:35.000 --> 00:15:39.000
So i have seen early bits for this, and we will be releasing

00:15:39.000 --> 00:15:44.000
That shortly along the time frame of 3.1, Which is really

00:15:44.000 --> 00:15:48.000
The period of the next six weeks, so be watching for news from me on that.

00:15:48.000 --> 00:15:51.000
We will release that to you and you can start to experience what

00:15:51.000 --> 00:15:56.000
It's like to align your tags. You don't have to mentally worry

00:15:56.000 --> 00:15:58.000
About am i doing a stack panel, that kind of thing.

00:15:58.000 --> 00:16:01.000
We are working on xbine and we will be shipping that later this year.

00:16:01.000 --> 00:16:06.000
I saw a question on twitter who asked what does that mean?  are

00:16:06.000 --> 00:16:11.000
You guys going to bind to what we have for x bind, what are you

00:16:11.000 --> 00:16:14.000
Doing?  we are going to my understanding is be writing it

00:16:14.000 --> 00:16:17.000
Ourselves, open source instead of closed source are decisions

00:16:17.000 --> 00:16:20.000
That have to be taken into account.

00:16:20.000 --> 00:16:24.000
Excited to be bringing that to you, who is looking forward to x bind.

00:16:24.000 --> 00:16:31.000
I clearly like a lot of feedback so i appreciate, your arms will get tired.

00:16:31.000 --> 00:16:37.000
You will have to go down to the cloud developer advocate area and get your massage.

00:16:37.000 --> 00:16:40.000
Who has done the massage?  a scum of people, right on.

00:16:40.000 --> 00:16:44.000
So with that out of the way, let's get into xamarin forms 3.0.

00:16:44.000 --> 00:16:46.000
Amazing things going on here. So in preparation for this, i

00:16:46.000 --> 00:16:48.000
Wanted to dog food the not out of this thing. I wanted to make sure i fully

00:16:48.000 --> 00:16:53.000
Understood what the features were good for and how i could explain it to you.

00:16:53.000 --> 00:17:02.000
If you have been to the booth, we have the set up, the screens,

00:17:02.000 --> 00:17:08.000
The machines set up and a hands-on lab. I had this grandiose plans for

00:17:08.000 --> 00:17:10.000
It to be this great hands on experience.

00:17:10.000 --> 00:17:13.000
You are all so busy, you are moving session to session, you

00:17:13.000 --> 00:17:19.000
Are grabbing your swag, you have to make sure you get the t-shirt

00:17:19.000 --> 00:17:24.000
Before your size is gone. So even a five-minute hands-on

00:17:24.000 --> 00:17:26.000
Lab was probably a little ambitious, but i made this app

00:17:26.000 --> 00:17:28.000
Available to you and i want you to download this app.

00:17:28.000 --> 00:17:32.000
I want you to play with this app.

00:17:32.000 --> 00:17:35.000
It uses flex layout, visual state manager, it uses css.

00:17:35.000 --> 00:17:39.000
The feedback we are hearing at the booth, they will say what's new.

00:17:39.000 --> 00:17:46.000
We tell them about flex layout, css, the feedback has been

00:17:46.000 --> 00:17:51.000
Really overwhelmingly positive. Certainly there are concerns

00:17:51.000 --> 00:17:53.000
From certain groups about oh, css, what does that mean for me?

00:17:53.000 --> 00:17:55.000
But i would be interested to hear how much positive feedback

00:17:55.000 --> 00:17:57.000
There has been. With this i will switch to my

00:17:57.000 --> 00:17:59.000
Phone and i want to show you the app running.

00:17:59.000 --> 00:18:04.000
I will switch over to 8 real quick, give you an or orientation

00:18:04.000 --> 00:18:08.000
I need unlock with my face. Here we have the app, beautiful

00:18:08.000 --> 00:18:14.000
App, i'm scrolling up underneath the navigation bar, you are like

00:18:14.000 --> 00:18:23.000
How did he do that f download the app. I have sweet animations, overlays.

00:18:23.000 --> 00:18:28.000
I can navigate to my monkey. There is vision ai stuff going

00:18:28.000 --> 00:18:33.000
On in here, i have a round of achievements because i thought it would be cool to game my few

00:18:33.000 --> 00:18:38.000
This thing so when you take photos, jim bennett who is

00:18:38.000 --> 00:18:41.000
Sitting in the second row very kindly contributed vision work to this.

00:18:41.000 --> 00:18:46.000
There are actually two vision pieces there is custom vision

00:18:46.000 --> 00:18:48.000
Which on device is analyzing the photo and saying i see this,

00:18:48.000 --> 00:18:51.000
Here is the tag. And then it has the api portion.

00:18:51.000 --> 00:18:57.000
So we send that to the api and get back ocr scanning.

00:18:57.000 --> 00:19:06.000
So can we give him a round of applause

00:19:06.000 --> 00:19:09.000
?  So what i want to do real quick if you don't mind, i

00:19:09.000 --> 00:19:14.000
Will take a picture. I want you all to kind of give

00:19:14.000 --> 00:19:20.000
Me some waves, come on. This is mostly the front.

00:19:20.000 --> 00:19:23.000
Super ensthawz afterric and didn't enthusiastic.

00:19:23.000 --> 00:19:29.000
So i took a photo, shows up down here. Did you notice, as i rotate,

00:19:29.000 --> 00:19:34.000
Look at where my button is, i am repositioning things based on orientation.

00:19:34.000 --> 00:19:41.000
That's visual state manager. I have this, bummer no achievements, nothing.

00:19:41.000 --> 00:19:44.000
I hit that. It says no achievements, no way.

00:19:44.000 --> 00:19:48.000
So i'm like, all right, i will help you train that.

00:19:48.000 --> 00:19:55.000
I have got all of the tags in here and this was done by shane,

00:19:55.000 --> 00:19:58.000
One of our engineers, pure wane is his handle on line.

00:19:58.000 --> 00:20:03.000
This is pretty awesome. I can say well this is a xamarin

00:20:03.000 --> 00:20:05.000
Thing because we are doing a xamarin thing.

00:20:05.000 --> 00:20:08.000
I submit the tag. That's uploading that to the

00:20:08.000 --> 00:20:13.000
Custom vision api. That's going to be in the cue.

00:20:13.000 --> 00:20:16.000
Pretty cool, right?  so that's now up in my training set.

00:20:16.000 --> 00:20:19.000
If you haven't explored the vision api stuff, the custom

00:20:19.000 --> 00:20:21.000
Vision stuff, this is cool stuff.

00:20:21.000 --> 00:20:24.000
We have training sets of images, that's been added so the next

00:20:24.000 --> 00:20:31.000
Time i go into the web portal, i will see that image and i can

00:20:31.000 --> 00:20:37.000
Verify that the tag is accurate, add it to my training set,

00:20:37.000 --> 00:20:41.000
Update my core ml, update tensorflow, update buzz word

00:20:41.000 --> 00:20:44.000
Bingo, recompile and i have a whole new set of awesome

00:20:44.000 --> 00:20:53.000
Intelligence in my app. Sweet?  it's pretty cool, isn't

00:20:53.000 --> 00:20:56.000
It?  i've got qr code scanner so i'm doing some modal stuff.

00:20:56.000 --> 00:21:01.000
Something to note about a lot of these icons i'm using in here,

00:21:01.000 --> 00:21:06.000
I'm using the fabric font and an icon font to be able to do all

00:21:06.000 --> 00:21:09.000
Of this stuff, so save you a ton of time.

00:21:09.000 --> 00:21:18.000
So that's the app, totally talking really fast.

00:21:18.000 --> 00:21:24.000
Let's jump back over to my machine.

00:21:24.000 --> 00:21:29.000
First of all, get out your phones, take a picture of the qr

00:21:29.000 --> 00:21:36.000
Code. That will take you to a web page

00:21:36.000 --> 00:21:39.000
That our awesome marketing team and david sanchez put together.

00:21:39.000 --> 00:21:43.000
You can go straight to app center. That's an awesome integration we

00:21:43.000 --> 00:21:47.000
Did here, you can take a look at how we did that.

00:21:47.000 --> 00:21:51.000
This is using app center, xamarin essentials which is a

00:21:51.000 --> 00:21:56.000
Preview for cross platform apis. Love that stuff.

00:21:56.000 --> 00:21:59.000
It's used in tons of pluck plug ins.

00:21:59.000 --> 00:22:05.000
Anybody using mark down, so you can see how this happens.

00:22:05.000 --> 00:22:08.000
This is not just a bare bones, it's another sample from another

00:22:08.000 --> 00:22:12.000
Xamarin thing. If i were building this, i just

00:22:12.000 --> 00:22:15.000
Went and grabbed plug ins and code from different places and

00:22:15.000 --> 00:22:21.000
Code from samples like you do. You use search engines, one that

00:22:21.000 --> 00:22:28.000
I won't name, to go find code. Isn't that what you do?  you are

00:22:28.000 --> 00:22:35.000
Like, no, i don't do that.

00:22:35.000 --> 00:22:40.000
We have right to left support, flex layout and cs

00:22:40.000 --> 00:22:42.000
S. I want to talk about the f100

00:22:42.000 --> 00:22:48.000
Later on. You may have heard the label

00:22:48.000 --> 00:22:52.000
Thrown around f100. That is 100 little paper cut

00:22:52.000 --> 00:22:54.000
That's drive me nuts why do i have to write platform code to

00:22:54.000 --> 00:23:00.000
Do x, y, z. We do i have to go down to

00:23:00.000 --> 00:23:05.000
Android and add that padding or what not.

00:23:05.000 --> 00:23:09.000
So we have an initiative with the community, our engineers and

00:23:09.000 --> 00:23:13.000
Engineers across the xamarin organization are working on this

00:23:13.000 --> 00:23:17.000
As well to help remove a lot of small paper cuts.

00:23:17.000 --> 00:23:20.000
Let's solve those things. Let's make everything easier and

00:23:20.000 --> 00:23:22.000
Make you more productive. Who wants to be productive?  we

00:23:22.000 --> 00:23:29.000
All want to be productive. Yes. I was super pleased with how

00:23:29.000 --> 00:23:31.000
Productive i was building the app that i built.  I was able to

00:23:31.000 --> 00:23:35.000
Crush it. Of course, i'm saying that and

00:23:35.000 --> 00:23:40.000
You are supposed to tell me i crushed it, but that's okay.

00:23:40.000 --> 00:23:42.000
So visual state manager, so resource dictionary

00:23:42.000 --> 00:23:47.000
Improvements, take a look at a blog post i did several weeks

00:23:47.000 --> 00:23:53.000
Back where i showed you how to merge dictionaries and syntax in

00:23:53.000 --> 00:23:57.000
Loading from external xaml with resource dictionaries in them.

00:23:57.000 --> 00:24:02.000
You can mark them as compiled use using an xml tag.

00:24:02.000 --> 00:24:07.000
It reduces a lot of boilerplate stuff you have to write.

00:24:07.000 --> 00:24:10.000
So first we will talk about visual state manager.

00:24:10.000 --> 00:24:14.000
You get a couple of things for free with the visual elements.

00:24:14.000 --> 00:24:17.000
There are common states, normal, focused, disabled and you access

00:24:17.000 --> 00:24:21.000
The visual state manager. Visual element is doing this for you.

00:24:21.000 --> 00:24:25.000
So my example on the side is an entry, inside my entry, i

00:24:25.000 --> 00:24:29.000
Declare my visual state groups. When it's normal i want you to

00:24:29.000 --> 00:24:34.000
Look like this, when it's focused i want it to look like this.

00:24:34.000 --> 00:24:42.000
When it is disabled, look like this.

00:24:42.000 --> 00:24:46.000
So visual states for those who may not be familiar with them

00:24:46.000 --> 00:24:50.000
Are a nice way for you to declaratively say when my

00:24:50.000 --> 00:24:54.000
Control or my page or anything is in this state, look like this.

00:24:54.000 --> 00:24:58.000
Use these attributes and do that. And then you use the visual

00:24:58.000 --> 00:25:02.000
State manager itself to coreio graph it. In this case the visual element

00:25:02.000 --> 00:25:06.000
Is doing that for us. It knows these things.

00:25:06.000 --> 00:25:10.000
So how did i do that with the orientation change?  so as you

00:25:10.000 --> 00:25:17.000
Saw before, i row sate and everything kind of shifts

00:25:17.000 --> 00:25:20.000
Position, so what i'm doing is i'm actually putting this into a

00:25:20.000 --> 00:25:23.000
Style, so slightly different, and i am showing all xaml

00:25:23.000 --> 00:25:29.000
Examples but i want to make sure i mention this is done in c#.

00:25:29.000 --> 00:25:33.000
So what i'm doing is i declare my style and i have a target of

00:25:33.000 --> 00:25:35.000
The flex layout, and then i declare my groups and i have

00:25:35.000 --> 00:25:40.000
Orientation state. If you declare common states it

00:25:40.000 --> 00:25:46.000
Totally works too. It's overriding the space.

00:25:46.000 --> 00:25:49.000
I wanted to be explicit about what states i'm dealing with.

00:25:49.000 --> 00:25:52.000
I declare my portrait and landscape states and then i

00:25:52.000 --> 00:25:55.000
Simply tell it what to do. In this case because i'm using a

00:25:55.000 --> 00:25:59.000
Flex layout, i don't have to do too much. All i have to do is tell it to

00:25:59.000 --> 00:26:06.000
Use a different direction. That's actually a lot of xaml

00:26:06.000 --> 00:26:09.000
For one property change but it illustrates in a simple way how

00:26:09.000 --> 00:26:12.000
You do these things using a visual state manager.

00:26:12.000 --> 00:26:17.000
And then behind the scenes, i have this block of code.

00:26:17.000 --> 00:26:20.000
I override the on size allocated. I measure my screen and say, are

00:26:20.000 --> 00:26:24.000
You portrait, are you landscape, and then deal accordingly.

00:26:24.000 --> 00:26:28.000
I use the visual state manager go to state, i point it at my container.

00:26:28.000 --> 00:26:31.000
I'm doing something similar with the last image, the image that

00:26:31.000 --> 00:26:34.000
Appears in the corner so it doesn't look portrait or

00:26:34.000 --> 00:26:37.000
Landscape in the wrong state. And that's it.

00:26:37.000 --> 00:26:42.000
Easy peasy. Cool, right?

00:26:42.000 --> 00:26:47.000
[Applause] right to left support.

00:26:47.000 --> 00:26:50.000
This is something we have been asked for for a long time and

00:26:50.000 --> 00:26:52.000
I'm extremely happy to be able to deliver this.

00:26:52.000 --> 00:26:55.000
The team worked hard on this because it requires going down

00:26:55.000 --> 00:26:58.000
Into all of the layouts and controls and making sure that

00:26:58.000 --> 00:27:01.000
They respect these changes. So there is a lot of work that

00:27:01.000 --> 00:27:04.000
Went on underneath the hood to make this happen.

00:27:04.000 --> 00:27:09.000
You previously could have done this using

00:27:09.000 --> 00:27:12.000
Effects because effects are a simple way to get at platform code.

00:27:12.000 --> 00:27:16.000
This is one of those paper cuts and it's a pretty deep paper cut

00:27:16.000 --> 00:27:19.000
Because all of the labor on your part to do this.

00:27:19.000 --> 00:27:23.000
On the left you have the to-do that it's left to right.

00:27:23.000 --> 00:27:26.000
On the right, it is right to left.

00:27:26.000 --> 00:27:29.000
I think that's a self-explanatory one.

00:27:29.000 --> 00:27:33.000
And you to know how hard it is to implement that?  get ready.

00:27:33.000 --> 00:27:37.000
Get to that one line. You put that one line in your

00:27:37.000 --> 00:27:41.000
Content page header of your 12-gs file and it will use --

00:27:41.000 --> 00:27:49.000
Xaml and it will use a helper file, simple as that, everything

00:27:49.000 --> 00:27:51.000
On the page is going to inherit that right to left or left to

00:27:51.000 --> 00:27:56.000
Right orientation. What if you want to override

00:27:56.000 --> 00:27:59.000
Something at a smolter level of layout or control within the

00:27:59.000 --> 00:28:03.000
Layout, you absolutely have a flow direction on all of the

00:28:03.000 --> 00:28:07.000
Elements to do that. You have full control of that.

00:28:07.000 --> 00:28:11.000
Simple as that, pretty cool. [Applause]

00:28:11.000 --> 00:28:17.000
All right. Flex layout and css i'm combining these together because

00:28:17.000 --> 00:28:20.000
They come from a similar place and they work well together.

00:28:20.000 --> 00:28:24.000
So what is flex layout?  this is a new layout we are introducing.

00:28:24.000 --> 00:28:29.000
It's inspired by the web's flex box. It is good at provide or thizing

00:28:29.000 --> 00:28:31.000
Distribution and lineup of the child elements and we will show

00:28:31.000 --> 00:28:35.000
Examples of that in a second. It's good for adaptive layouts

00:28:35.000 --> 00:28:40.000
So when you need to deal with multiple screen sizes and things

00:28:40.000 --> 00:28:42.000
Of that nature, it comes from the web.

00:28:42.000 --> 00:28:45.000
Browsers could be many different sizes and the content needs to

00:28:45.000 --> 00:28:51.000
Adapt to that. And one of my favorite features

00:28:51.000 --> 00:28:56.000
Of the flex layout because i am all about performance is it

00:28:56.000 --> 00:28:58.000
Promotes a flatter ui, less ui nesting.

00:28:58.000 --> 00:29:02.000
As i mentioned before, if you have a deep nested ui, it has to

00:29:02.000 --> 00:29:05.000
Measure, measure, measure layout, layout, and jason will

00:29:05.000 --> 00:29:09.000
Probably critique me. But that's a lot of measuring

00:29:09.000 --> 00:29:15.000
And laying out. We want to avoid that, so with

00:29:15.000 --> 00:29:19.000
Flex layout, if you use the properties and controls, you can

00:29:19.000 --> 00:29:22.000
Achieve a very flat layout which is going to layout and render

00:29:22.000 --> 00:29:25.000
The first time faster. It will also animate better.

00:29:25.000 --> 00:29:27.000
So that's cool. Along with that comes style

00:29:27.000 --> 00:29:35.000
Sheets. These are cascading style sheets

00:29:35.000 --> 00:29:38.000
This is valid css with one minor exception currently.

00:29:38.000 --> 00:29:43.000
When you want to declare a content page or whatever the

00:29:43.000 --> 00:29:52.000
Inheriting base type s. We use a kier

00:29:52.000 --> 00:29:57.000
Caret simple -- symbol.

00:29:57.000 --> 00:30:03.000
You copy the code, you drop it in here, you assign it to your

00:30:03.000 --> 00:30:06.000
Xaml elements and it will work. It is parsed at run time.

00:30:06.000 --> 00:30:08.000
This does not replace xaml styles.

00:30:08.000 --> 00:30:12.000
So this is a parser on top of the existing styles

00:30:12.000 --> 00:30:16.000
Api. You choose what works best for

00:30:16.000 --> 00:30:19.000
You and you run with that. What makes you more productive?

00:30:19.000 --> 00:30:21.000
It supports many properties but it doesn't support all of them.

00:30:21.000 --> 00:30:25.000
That's something we will be improving upon in the future.

00:30:25.000 --> 00:30:29.000
We want to hear feedback on this. I'm gathering feedback at the

00:30:29.000 --> 00:30:33.000
Booth, but as you are using this, as you are exploring it,

00:30:33.000 --> 00:30:37.000
One of our documentation guys said to me, you know, when i saw

00:30:37.000 --> 00:30:39.000
The css thing i hated it. But he had to work with it

00:30:39.000 --> 00:30:42.000
Because he had to write the documentation and he goes i

00:30:42.000 --> 00:30:47.000
Think it's pretty cool. So give it a shot.

00:30:47.000 --> 00:30:50.000
I'm hearing that people like the separation of styling and

00:30:50.000 --> 00:30:54.000
Layout, so you may also like it. I think many of you will.

00:30:54.000 --> 00:30:57.000
Styles are applied one by one in definition order, this is

00:30:57.000 --> 00:31:03.000
Cascading style sheets and they are defined on the item itself.

00:31:03.000 --> 00:31:09.000
Let's get in some code real quick.

00:31:09.000 --> 00:31:17.000
I am going to crush this so here first of all, to

00:31:17.000 --> 00:31:20.000
Reference my style sheet, i do this at the top, so in my

00:31:20.000 --> 00:31:23.000
Resources i have a style sheet i pass at the source.

00:31:23.000 --> 00:31:26.000
In this case it's a relative path to my css file which is

00:31:26.000 --> 00:31:29.000
What you see over here on the side. And this is a simple css file,

00:31:29.000 --> 00:31:34.000
I'm referencing a class for a container, a class for an item.

00:31:34.000 --> 00:31:41.000
The item are the things that appear. So you see it's all squashed and

00:31:41.000 --> 00:31:43.000
Squiggly on the right-hand side. So let's fix that up with some

00:31:43.000 --> 00:31:46.000
Flex layout. So first of all, i will set a

00:31:46.000 --> 00:31:52.000
Direction, and i will say, i will use the row, and actually i

00:31:52.000 --> 00:31:56.000
Have a lot 6 elements in there, so i want them to wrap.

00:31:56.000 --> 00:32:00.000
As soon as i do that, now everything is laying out

00:32:00.000 --> 00:32:04.000
Properly because it knows how to size everything. And so i can, from here, start

00:32:04.000 --> 00:32:08.000
To do interesting things with how do i want to justify?  well,

00:32:08.000 --> 00:32:10.000
I can center it, so that will take everything, group it

00:32:10.000 --> 00:32:15.000
Together, put it right in the middle of my screen.

00:32:15.000 --> 00:32:21.000
If i want it to all be aligned to the right-hand side, i can use n.

00:32:21.000 --> 00:32:24.000
That pushes it all the way over. Same thing for start obviously,

00:32:24.000 --> 00:32:29.000
And then i have a couple of other properties in here, space

00:32:29.000 --> 00:32:32.000
Around, space between, space evenly. These are some pretty nice ways

00:32:32.000 --> 00:32:39.000
To control that as well. So now what i can do is i say

00:32:39.000 --> 00:32:44.000
That's working out well, but i'm a css person, i wish i had used css.

00:32:44.000 --> 00:32:47.000
So to use css and apply this, all i have to do is add that

00:32:47.000 --> 00:32:52.000
Class here, so i have the class i just showed you a second ago,

00:32:52.000 --> 00:32:56.000
Container, boom!  and then over here i can do the same kind of

00:32:56.000 --> 00:33:11.000
Thing, so i'm using space around. I can do space between

00:33:11.000 --> 00:33:16.000
So that is a real quick look at how you can use flex layout in css.

00:33:16.000 --> 00:33:20.000
Something i will point to next because there are a lot of

00:33:20.000 --> 00:33:24.000
Different layouts that work out well with this.

00:33:24.000 --> 00:33:29.000
Take a look at my github. I have a project up there called

00:33:29.000 --> 00:33:34.000
Flexibility, and this is five, six different layouts that i

00:33:34.000 --> 00:33:38.000
Took, and i will also use some stuff that stephon on

00:33:38.000 --> 00:33:41.000
Engineering team does. And i will include that to give

00:33:41.000 --> 00:33:44.000
You examples of how i might use flex layout in your projects.

00:33:44.000 --> 00:33:49.000
As you can see, there is cool stuff like the movie one in the middle.

00:33:49.000 --> 00:33:52.000
That's all flex layout makeing that happen.

00:33:52.000 --> 00:33:57.000
It's cool. You will start to get into the

00:33:57.000 --> 00:34:04.000
Flex basis shrink and grow properties. So with that, that's a lot of

00:34:04.000 --> 00:34:07.000
Really cool scam rine forms 3.0 Stuff. I would like to call sam bassou

00:34:07.000 --> 00:34:10.000
On stage from progress, we are happy that our partners are

00:34:10.000 --> 00:34:14.000
Working with us to make sure their controls are looking good

00:34:14.000 --> 00:34:17.000
And taking advantage of this stuff. So with that, sam will show you

00:34:17.000 --> 00:34:28.000
What they have been up to. [Applause]

00:34:28.000 --> 00:34:35.000
>> All right, hi, everyone, i'm sam, one of the developer

00:34:35.000 --> 00:34:41.000
Octobers at progress. I'm here today to kind of

00:34:41.000 --> 00:34:44.000
Showcase that all of these wonderful improvements you are

00:34:44.000 --> 00:34:46.000
Seeing in xamarin forms 3.0, They don't just work with stuff

00:34:46.000 --> 00:34:48.000
Out of the box. They work with complex and

00:34:48.000 --> 00:34:52.000
Custom ui. So david is a friend, but if i

00:34:52.000 --> 00:34:57.000
Go longer than five minutes, he will likely kick me out, so let

00:34:57.000 --> 00:35:01.000
Me try to keep this short and sweet.

00:35:01.000 --> 00:35:04.000
I will switch to my machine here. There we go.

00:35:04.000 --> 00:35:08.000
So you are going to streamline this. I have a super simple setup.

00:35:08.000 --> 00:35:15.000
This is one xamarin forms solution and this is a .Net standard library.

00:35:15.000 --> 00:35:18.000
I have an ios project, nothing else, so let's start.

00:35:18.000 --> 00:35:21.000
The first thing is my main page xaml, which is the first payment

00:35:21.000 --> 00:35:26.000
Of my app. You will notice that i'm doing

00:35:26.000 --> 00:35:31.000
Some fancy code. I am doing five strings, and i

00:35:31.000 --> 00:35:34.000
Want to bind that collection to a list view.

00:35:34.000 --> 00:35:36.000
So let's take a look at my xaml page here.

00:35:36.000 --> 00:35:40.000
Here is generic list view. Do you have to use it?  no.

00:35:40.000 --> 00:35:44.000
But you are missing out on some of the engineering that we are

00:35:44.000 --> 00:35:46.000
Putting in list views and controls, things like

00:35:46.000 --> 00:35:50.000
Virtualization layouts. You are not going to see that

00:35:50.000 --> 00:35:53.000
Because this is a super simple demo.

00:35:53.000 --> 00:35:57.000
What i am doing here is binding that collection.

00:35:57.000 --> 00:35:59.000
That's back in my xaml cs, i'm binding it to my list view, and

00:35:59.000 --> 00:36:02.000
I want to put in a stack layout in my item template.

00:36:02.000 --> 00:36:07.000
This is what controls how each of the rows of my list view looks like.

00:36:07.000 --> 00:36:11.000
I have a label bound to the name and i have a xamarin forms

00:36:11.000 --> 00:36:17.000
Button so let's run this thing and it

00:36:17.000 --> 00:36:23.000
Will fire up in my iris later if it's still awake.

00:36:23.000 --> 00:36:30.000
There you go. So first thing is we have a list

00:36:30.000 --> 00:36:32.000
View, binding to my list of strings, which is good.

00:36:32.000 --> 00:36:35.000
Let's stop that and let's add a little more to this.

00:36:35.000 --> 00:36:40.000
The first thing i want to put back here is what i had on my clipboard, style class.

00:36:40.000 --> 00:36:44.000
So what i'm pulling in is what's called a theme.

00:36:44.000 --> 00:36:47.000
A theme is a collection of xaml styled so you have a uniform way

00:36:47.000 --> 00:36:52.000
Of styling all of your ui across your app.

00:36:52.000 --> 00:36:55.000
This is coming in as a nougat package. It's a collection of different styles.

00:36:55.000 --> 00:36:58.000
For my list view, it's a blue theme but i want to bring in

00:36:58.000 --> 00:37:05.000
Orange and green. That's why i'm customizing things here.

00:37:05.000 --> 00:37:12.000
Let's go back to my xaml and open up one more thing here.

00:37:12.000 --> 00:37:16.000
It's a resource we are pulling in. I deleted that.

00:37:16.000 --> 00:37:22.000
There you go. So while this is firing up css

00:37:22.000 --> 00:37:24.000
Guys, i can understand the hesitation, but give it up

00:37:24.000 --> 00:37:26.000
Because this is here to stay and it's wonderful.

00:37:26.000 --> 00:37:29.000
You don't have to use it if you don't like it, but it gives you

00:37:29.000 --> 00:37:34.000
A lot of flexibility. If you see where things are

00:37:34.000 --> 00:37:41.000
Going with web assembly and, frank, thank you, with you have

00:37:41.000 --> 00:37:45.000
A web app and mobile app you can start sharing styles between the two.

00:37:45.000 --> 00:37:47.000
I have a simple css sitting here in my project.

00:37:47.000 --> 00:37:54.000
Let's look at that. One thing where css though saas

00:37:54.000 --> 00:37:58.000
And less pre-processing works. So this is the one carrot symbol

00:37:58.000 --> 00:38:03.000
That david was mentioning, it's properties and selectors.

00:38:03.000 --> 00:38:06.000
I'm driving my content page, setting it to light green, and

00:38:06.000 --> 00:38:09.000
All of the things you expect to see, name styles.

00:38:09.000 --> 00:38:12.000
This is a parent child relationship.

00:38:12.000 --> 00:38:18.000
This is trick trickle down effect. So i want my buttons in my stack

00:38:18.000 --> 00:38:23.000
Layout to have that look and feel. We are grabbing a generic list

00:38:23.000 --> 00:38:32.000
View and styling it with css. All we are saying is direction

00:38:32.000 --> 00:38:34.000
Right to left and this is to support

00:38:34.000 --> 00:38:38.000
Localization. And empathy actually makes

00:38:38.000 --> 00:38:42.000
Business sense, when you put loving care in your apps, it's

00:38:42.000 --> 00:38:46.000
Better user experience. So let's go ahead and fire this

00:38:46.000 --> 00:38:53.000
Up one more time.

00:38:53.000 --> 00:38:58.000
And we will wait for it to deploy. There you have it.

00:38:58.000 --> 00:39:00.000
So same list view, just styled differently with css and things

00:39:00.000 --> 00:39:03.000
Are right to left. Now, i'm outputting strings,

00:39:03.000 --> 00:39:09.000
Please don't do that. Pick it up from our resource file.

00:39:09.000 --> 00:39:14.000
And right here if you notice that this button is round and if

00:39:14.000 --> 00:39:18.000
I tap on this, the green borderna comes up is a little vsm.

00:39:18.000 --> 00:39:24.000
Let's go back to xaml. I defined as a style resource

00:39:24.000 --> 00:39:28.000
And there is visual groups here. Notice how scam rine xamarin

00:39:28.000 --> 00:39:31.000
Forms gives me three states. This one is looking at the press

00:39:31.000 --> 00:39:35.000
State and all i have to do is like our button, add that to my

00:39:35.000 --> 00:39:39.000
Volume property and whenever that fires we are he is ep

00:39:39.000 --> 00:39:43.000
Shallly going to ask the visual state manager to force it to go

00:39:43.000 --> 00:39:46.000
To press state. Now, let's talk about one more

00:39:46.000 --> 00:39:50.000
Thing here. Let's go in here.

00:39:50.000 --> 00:39:52.000
We are going to stop this. Actually, before i go off the

00:39:52.000 --> 00:39:57.000
Ios simulator. If i go down here, you notice my

00:39:57.000 --> 00:40:00.000
Text is in german because i flipped language settings.

00:40:00.000 --> 00:40:02.000
If i come back here to any other app which is using some of our

00:40:02.000 --> 00:40:08.000
Controls, this is a list view or i'm sorry, a grid, and all of

00:40:08.000 --> 00:40:11.000
The text comes from you and your app and your data.

00:40:11.000 --> 00:40:14.000
Anything that we throw in, like a piece of text, you can

00:40:14.000 --> 00:40:17.000
Localize that way simple resource file and we will help

00:40:17.000 --> 00:40:24.000
You out and you get to make up our own resource file. So let's stop that.

00:40:24.000 --> 00:40:27.000
There is one more thing i want to show you.

00:40:27.000 --> 00:40:31.000
I will come down here in my app xaml, and i will switch out the

00:40:31.000 --> 00:40:33.000
Main page so we use something different.  That's for the mac.

00:40:33.000 --> 00:40:37.000
See that head. That's for the mac.

00:40:37.000 --> 00:40:42.000
Let me switch that up as a start up project.

00:40:42.000 --> 00:40:45.000
What i'm showing here is xamarin forms supporting all of these

00:40:45.000 --> 00:40:48.000
New platforms, which is awesome because now your code can

00:40:48.000 --> 00:40:51.000
Support so many different platforms and the same code

00:40:51.000 --> 00:40:56.000
Takes you places, so that's generic gauge and more and more

00:40:56.000 --> 00:41:01.000
Things are working on these other platforms.

00:41:01.000 --> 00:41:04.000
We have things working with web assembly. I'm biased, but the point is we

00:41:04.000 --> 00:41:07.000
Are going to keep helping you guys with sharp ui and sharp tools.

00:41:07.000 --> 00:41:12.000
I think this is one of the best times to be a xamarin forms developer.

00:41:12.000 --> 00:41:15.000
And thanks for the work that the community and the xamarin team

00:41:15.000 --> 00:41:18.000
Is doing. With that i will pass it back to

00:41:18.000 --> 00:41:27.000
David here. [Applause]

00:41:27.000 --> 00:41:32.000
>> That's awesome. All right.

00:41:32.000 --> 00:41:35.000
So lots of school stuff for you today. Learn more with our docs, our

00:41:35.000 --> 00:41:38.000
Docs team has done a lot of work there.

00:41:38.000 --> 00:41:42.000
I need to switch over to that one. There we go.

00:41:42.000 --> 00:41:45.000
All right. Lots of really good new

00:41:45.000 --> 00:41:50.000
Documentation is up there and available for you.

00:41:50.000 --> 00:41:52.000
The damn u team -- zamu team has put together each of the

00:41:52.000 --> 00:41:54.000
Features i highlighted. In 10 to 15 minutes or less you

00:41:54.000 --> 00:42:01.000
Can learn everything you need to know to get started.

00:42:01.000 --> 00:42:04.000
I have three minutes to tell you all about the future.

00:42:04.000 --> 00:42:08.000
I am not that good of a future teller, but we will do our best.

00:42:08.000 --> 00:42:12.000
I want to recommend that you go check out the enhancements board

00:42:12.000 --> 00:42:17.000
Which is one 6 our projects up there. Look specifically for the f100

00:42:17.000 --> 00:42:20.000
Labels, and that will give you an indication of those paper

00:42:20.000 --> 00:42:24.000
Cuts that i mentioned. If you don't see the things that

00:42:24.000 --> 00:42:27.000
Are causing you frustration or pain, add a speck and let me know.

00:42:27.000 --> 00:42:32.000
Ask any questions that you can. We want to make sure we make

00:42:32.000 --> 00:42:37.000
Xamarin forms the best experience possible to make you productive.

00:42:37.000 --> 00:42:40.000
In terms of roadmap. I have updated the roadmap.

00:42:40.000 --> 00:42:44.000
It's on the github. I'm giving you an indication of

00:42:44.000 --> 00:42:47.000
Everything that's coming up. If you don't see your favorite

00:42:47.000 --> 00:42:50.000
Feature there, let me know. Some of the cool stuff, things

00:42:50.000 --> 00:42:55.000
That are in 3.1 Available today, so you don't just get 3.0 Stable.

00:42:55.000 --> 00:43:02.000
You get 3.1 Pre. Isn't that cool?  right on.

00:43:02.000 --> 00:43:07.000
So a lot of great community work is represented here in these

00:43:07.000 --> 00:43:09.000
F100s, the bindable span, drop

00:43:09.000 --> 00:43:11.000
Shadows is in there. Who wants drop shadows on

00:43:11.000 --> 00:43:17.000
Everything. When i was building the app, i

00:43:17.000 --> 00:43:21.000
Was like i wish we could use 3.1 Because it gets 3.0 And all of

00:43:21.000 --> 00:43:25.000
The cool stuff. Nice things in there, hiding

00:43:25.000 --> 00:43:28.000
Scroll view, et cetera. I'm not telling you what version

00:43:28.000 --> 00:43:35.000
Number it is, it might be 3.2, It might be 3.4, I don't know,

00:43:35.000 --> 00:43:40.000
It may be 3.2 Or 3.1, I don't want to set a false expectation

00:43:40.000 --> 00:43:43.000
On version numbers, it will have rounded corners, rounded image

00:43:43.000 --> 00:43:48.000
And button padding. They will be in there because i

00:43:48.000 --> 00:43:53.000
Outly would use those myself. I know of you will as well.

00:43:53.000 --> 00:43:57.000
We want to work on accessibility focus and tab order will be important.

00:43:57.000 --> 00:44:00.000
And i hear from you all of the time we need better gesture support.

00:44:00.000 --> 00:44:04.000
We need the support in there to be more reliable, we need more

00:44:04.000 --> 00:44:09.000
Gestures to be supported. Well bring that to you as well.

00:44:09.000 --> 00:44:11.000
Beyond that, x bind is coming later this year, and then life

00:44:11.000 --> 00:44:15.000
Cycle events, the predictable life cycle events you want to be

00:44:15.000 --> 00:44:20.000
Able to see when your new page comes on line.

00:44:20.000 --> 00:44:24.000
All of that stuff will be predictable. In terms of research, i will

00:44:24.000 --> 00:44:26.000
Mention quickly the three things i'm primarily talking to

00:44:26.000 --> 00:44:31.000
Customers about and i would like to hear from you about are the

00:44:31.000 --> 00:44:34.000
Designs that you are needing to build. Do they need to look the same on

00:44:34.000 --> 00:44:39.000
Ios and android. What are the expectations that

00:44:39.000 --> 00:44:41.000
You are working towards building for your businesses, for your

00:44:41.000 --> 00:44:44.000
Customers?  and then performance and productivity are key areas

00:44:44.000 --> 00:44:48.000
That we really are always working on, when you choose

00:44:48.000 --> 00:44:52.000
Xamarin forms, you choose it to be productive and performant and

00:44:52.000 --> 00:44:56.000
We want to do that for you. Was this pretty good?  a lot of

00:44:56.000 --> 00:45:00.000
Stuff to play with. [Applause] give it a look.

00:45:00.000 --> 00:45:03.000
Download it today. Very excited.

00:45:03.000 --> 00:45:08.000
With that, update to xamarin forms through today.

00:45:08.000 --> 00:45:14.000
And review the session. Just don't comment on my bad jokes.

00:45:14.000 --> 00:45:17.000
They can't all be winners. All right, guys.

00:45:17.000 --> 00:45:21.000
If you want to talk, i will be at the xamarin booth from now

00:45:21.000 --> 00:45:24.000
Until they let me go, and please come down and see us.

00:45:24.000 --> 00:45:29.000
We still have monkeys if you haven't gotten your monkey, come and get it.

00:45:29.000 --> 00:45:32.000
This is the newest one to add to your collection, so you don't

00:45:32.000 --> 00:45:34.000
Want to miss out on that. All of your fronts will be

00:45:34.000 --> 00:45:37.000
Jealous. Your children will want to know

00:45:37.000 --> 00:45:41.000
Why you have monkeys in your office like my children do.

