0:03
welcome everybody um my name is Alvin
0:05
welcome everybody um my name is Alvin
0:05
welcome everybody um my name is Alvin Ashcraft and this topic is all about
0:07
Ashcraft and this topic is all about
0:07
Ashcraft and this topic is all about choosing the best UI framework for your
0:08
choosing the best UI framework for your
0:08
choosing the best UI framework for your next Windows app uh there's a ton of
0:11
next Windows app uh there's a ton of
0:11
next Windows app uh there's a ton of options out there for Windows developers
0:12
options out there for Windows developers
0:12
options out there for Windows developers today and we'll be touching on many of
0:14
today and we'll be touching on many of
0:14
today and we'll be touching on many of them today uh focusing primarily on the
0:17
them today uh focusing primarily on the
0:17
them today uh focusing primarily on the options for Microsoft I do a a version
0:20
options for Microsoft I do a a version
0:20
options for Microsoft I do a a version of this talk that's a bit longer that
0:21
of this talk that's a bit longer that
0:21
of this talk that's a bit longer that goes into a few more options some of the
0:23
goes into a few more options some of the
0:23
goes into a few more options some of the crossplatform things you can do for this
0:25
crossplatform things you can do for this
0:25
crossplatform things you can do for this we'll focus on the native Windows
0:28
we'll focus on the native Windows
0:28
we'll focus on the native Windows options and if we have time at the end
0:30
options and if we have time at the end
0:30
options and if we have time at the end will'll touch on a few other things like
0:31
will'll touch on a few other things like
0:31
will'll touch on a few other things like Maui Blazer hybrid in no platform some
0:33
Maui Blazer hybrid in no platform some
0:33
Maui Blazer hybrid in no platform some of
0:35
of those so a little bit about me uh I was
0:38
those so a little bit about me uh I was
0:38
those so a little bit about me uh I was software developer and architect for
0:40
software developer and architect for
0:40
software developer and architect for over 25 years working primarily with
0:42
over 25 years working primarily with
0:42
over 25 years working primarily with Microsoft technologies.net C I worked
0:45
Microsoft technologies.net C I worked
0:45
Microsoft technologies.net C I worked with WPF for many years I've got a a
0:48
with WPF for many years I've got a a
0:48
with WPF for many years I've got a a Blog out there on Alvin Ashcraft ccom
0:50
Blog out there on Alvin Ashcraft ccom
0:50
Blog out there on Alvin Ashcraft ccom where I post links to interesting
0:53
where I post links to interesting
0:53
where I post links to interesting developer resources every day I've
0:55
developer resources every day I've
0:55
developer resources every day I've written three books two editions of a
0:57
written three books two editions of a
0:57
written three books two editions of a wiui book and a parallel Pro programming
1:00
wiui book and a parallel Pro programming
1:00
wiui book and a parallel Pro programming with net book and I joined Microsoft a
1:03
with net book and I joined Microsoft a
1:03
with net book and I joined Microsoft a couple of years ago now um after writing
1:06
couple of years ago now um after writing
1:06
couple of years ago now um after writing the books I decided that I wanted to
1:08
the books I decided that I wanted to
1:08
the books I decided that I wanted to change gears and move from developing
1:10
change gears and move from developing
1:10
change gears and move from developing full-time to uh writing content uh so I
1:13
full-time to uh writing content uh so I
1:13
full-time to uh writing content uh so I write documentation training module
1:15
write documentation training module
1:15
write documentation training module sample code for Microsoft on the learn
1:18
sample code for Microsoft on the learn
1:18
sample code for Microsoft on the learn website and I'm also a conference
1:20
website and I'm also a conference
1:20
website and I'm also a conference organizer been working on uh the tech
1:23
organizer been working on uh the tech
1:23
organizer been working on uh the tech batch developer conference since uh Tech
1:25
batch developer conference since uh Tech
1:25
batch developer conference since uh Tech batch 2016 and our next event is coming
1:27
batch 2016 and our next event is coming
1:28
batch 2016 and our next event is coming up soon just a quick plug for that next
1:30
up soon just a quick plug for that next
1:30
up soon just a quick plug for that next month if you're in the east coast in the
1:33
month if you're in the east coast in the
1:33
month if you're in the east coast in the US check it out Tech bash.com
1:36
US check it out Tech bash.com
1:36
US check it out Tech bash.com but today we'll be covering a few things
1:39
but today we'll be covering a few things
1:39
but today we'll be covering a few things here we'll look at a brief history of
1:41
here we'll look at a brief history of
1:41
here we'll look at a brief history of Windows development how it's evolved
1:42
Windows development how it's evolved
1:42
Windows development how it's evolved over the years we'll look at uh the
1:45
over the years we'll look at uh the
1:45
over the years we'll look at uh the choices today some pros and cons of each
1:47
choices today some pros and cons of each
1:47
choices today some pros and cons of each of them uh we'll look at Windows forms
1:50
of them uh we'll look at Windows forms
1:50
of them uh we'll look at Windows forms WPF wii3 and the Windows app SDK and if
1:54
WPF wii3 and the Windows app SDK and if
1:54
WPF wii3 and the Windows app SDK and if we have time we'll get into some net Mal
1:57
we have time we'll get into some net Mal
1:57
we have time we'll get into some net Mal too and we'll uh wrap up by looking look
2:00
too and we'll uh wrap up by looking look
2:00
too and we'll uh wrap up by looking look at some guidelines you can CH you can
2:02
at some guidelines you can CH you can
2:02
at some guidelines you can CH you can use when choosing a framework and then
2:04
use when choosing a framework and then
2:04
use when choosing a framework and then we'll have some uh links and a little
2:06
we'll have some uh links and a little
2:06
we'll have some uh links and a little bit of Q&A at the
2:11
end so the history of net development
2:15
end so the history of net development
2:15
end so the history of net development back in 2002 whenn net first came out we
2:19
back in 2002 whenn net first came out we
2:19
back in 2002 whenn net first came out we had Windows forms or Wind forms as most
2:21
had Windows forms or Wind forms as most
2:21
had Windows forms or Wind forms as most people call it that was the successor to
2:23
people call it that was the successor to
2:23
people call it that was the successor to the VB6 forms uh and the designer for
2:28
the VB6 forms uh and the designer for
2:28
the VB6 forms uh and the designer for forms is nothing new uh with . net it
2:30
forms is nothing new uh with . net it
2:30
forms is nothing new uh with . net it was all the way back in Visual Basic
2:32
was all the way back in Visual Basic
2:32
was all the way back in Visual Basic 1991 there's a link here where Bill
2:34
1991 there's a link here where Bill
2:34
1991 there's a link here where Bill Gates demoed the uh Visual Basic forms
2:39
Gates demoed the uh Visual Basic forms
2:39
Gates demoed the uh Visual Basic forms designer and then next up in 2006 the
2:42
designer and then next up in 2006 the
2:42
designer and then next up in 2006 the windows presentation Foundation or WPF
2:45
windows presentation Foundation or WPF
2:45
windows presentation Foundation or WPF was introduced around the same time as
2:47
was introduced around the same time as
2:47
was introduced around the same time as Windows Vista and it was the first SLE
2:50
Windows Vista and it was the first SLE
2:50
Windows Vista and it was the first SLE based UI framework for Microsoft and uh
2:53
based UI framework for Microsoft and uh
2:53
based UI framework for Microsoft and uh it followed everybody followed shortly
2:55
it followed everybody followed shortly
2:55
it followed everybody followed shortly by uh everybody's favorite web
2:57
by uh everybody's favorite web
2:57
by uh everybody's favorite web development framework silverite in 2007
3:00
development framework silverite in 2007
3:00
development framework silverite in 2007 WPF has become a big deal for Enterprise
3:02
WPF has become a big deal for Enterprise
3:03
WPF has become a big deal for Enterprise developers there's a lot of big apps out
3:04
developers there's a lot of big apps out
3:04
developers there's a lot of big apps out there written by companies on
3:07
there written by companies on
3:07
there written by companies on WPF and between that and windows forms
3:10
WPF and between that and windows forms
3:10
WPF and between that and windows forms uh they became the deao choices for many
3:14
uh they became the deao choices for many
3:14
uh they became the deao choices for many years so we'll skip over the Windows 8
3:17
years so we'll skip over the Windows 8
3:17
years so we'll skip over the Windows 8 zaml apps that came out in 2012 and talk
3:20
zaml apps that came out in 2012 and talk
3:20
zaml apps that came out in 2012 and talk about uh uwp we won't get dive into any
3:24
about uh uwp we won't get dive into any
3:24
about uh uwp we won't get dive into any examples today that came out I'm I'm
3:27
examples today that came out I'm I'm
3:27
examples today that came out I'm I'm sorry to interrupt but it looks like
3:29
sorry to interrupt but it looks like
3:29
sorry to interrupt but it looks like your slides and
3:31
your slides and changing the second slide oh strange
3:35
changing the second slide oh strange
3:35
changing the second slide oh strange Should Be Me flip back that's do you see
3:39
Should Be Me flip back that's do you see
3:39
Should Be Me flip back that's do you see agenda uh no uh you are on the second
3:43
agenda uh no uh you are on the second
3:43
agenda uh no uh you are on the second slide let me go out of the presentation
3:46
slide let me go out of the presentation
3:46
slide let me go out of the presentation and yeah now I see changing yeah move to
3:50
and yeah now I see changing yeah move to
3:50
and yeah now I see changing yeah move to agenda yeah okay maybe I'll keep it out
3:52
agenda yeah okay maybe I'll keep it out
3:52
agenda yeah okay maybe I'll keep it out of presenter mode and just show it here
3:54
of presenter mode and just show it here
3:54
of presenter mode and just show it here in
3:55
in PowerPoint all right so yes there was
3:59
PowerPoint all right so yes there was
3:59
PowerPoint all right so yes there was Tech Bash the
4:00
Tech Bash the agenda and here's the history slide that
4:02
agenda and here's the history slide that
4:02
agenda and here's the history slide that we're
4:03
we're on so we had a WPF and then uwp we won't
4:08
on so we had a WPF and then uwp we won't
4:08
on so we had a WPF and then uwp we won't be looking at the examples today due to
4:10
be looking at the examples today due to
4:10
be looking at the examples today due to time but um that was that came out in
4:12
time but um that was that came out in
4:12
time but um that was that came out in 2015 with Windows
4:14
2015 with Windows 10 and uh then in 2021 there a couple of
4:19
10 and uh then in 2021 there a couple of
4:19
10 and uh then in 2021 there a couple of things actually came out in addition to
4:20
things actually came out in addition to
4:20
things actually came out in addition to Wi UI 3 that you see on the slide there
4:23
Wi UI 3 that you see on the slide there
4:23
Wi UI 3 that you see on the slide there um that came out in the March time frame
4:26
um that came out in the March time frame
4:26
um that came out in the March time frame later that year uh there was Blazer and
4:28
later that year uh there was Blazer and
4:28
later that year uh there was Blazer and Blazer hybrid
4:30
Blazer hybrid controls came out so you could embed
4:33
controls came out so you could embed
4:33
controls came out so you could embed Blazer apps inside of either a Maui app
4:35
Blazer apps inside of either a Maui app
4:35
Blazer apps inside of either a Maui app or Wind forms or WPF forms and I have an
4:38
or Wind forms or WPF forms and I have an
4:38
or Wind forms or WPF forms and I have an example of that in my code that folks
4:40
example of that in my code that folks
4:40
example of that in my code that folks can check out later but we won't
4:42
can check out later but we won't
4:42
can check out later but we won't probably have time to look at that
4:43
probably have time to look at that
4:44
probably have time to look at that today and then finally. net Maui that's
4:47
today and then finally. net Maui that's
4:47
today and then finally. net Maui that's the successor of the zamarin forums that
4:49
the successor of the zamarin forums that
4:49
the successor of the zamarin forums that came out in 2022 and hopefully folks
4:52
came out in 2022 and hopefully folks
4:52
came out in 2022 and hopefully folks folks that were on zamarin have migrated
4:54
folks that were on zamarin have migrated
4:54
folks that were on zamarin have migrated over to Maui as Z was deprecated this
4:57
over to Maui as Z was deprecated this
4:57
over to Maui as Z was deprecated this past spring
5:02
and this slide just shows uh some
5:04
and this slide just shows uh some
5:04
and this slide just shows uh some examples of the UI that you can make
5:07
examples of the UI that you can make
5:07
examples of the UI that you can make with each one uh the first one in the
5:09
with each one uh the first one in the
5:09
with each one uh the first one in the upper left probably looks familiar to
5:11
upper left probably looks familiar to
5:11
upper left probably looks familiar to folks as a Windows forms UI that's kind
5:13
folks as a Windows forms UI that's kind
5:14
folks as a Windows forms UI that's kind of the typical outof the Box very U
5:17
of the typical outof the Box very U
5:17
of the typical outof the Box very U windows I don't know 95 looking
5:21
windows I don't know 95 looking
5:21
windows I don't know 95 looking UI uh but on the bottom below that is
5:24
UI uh but on the bottom below that is
5:24
UI uh but on the bottom below that is also Windows forms and that shows what
5:26
also Windows forms and that shows what
5:26
also Windows forms and that shows what you can do with it if you get some third
5:27
you can do with it if you get some third
5:27
you can do with it if you get some third party controls some theming that's
5:29
party controls some theming that's
5:29
party controls some theming that's offered by Third parties you can make
5:31
offered by Third parties you can make
5:31
offered by Third parties you can make things look pretty nice with Wind
5:33
things look pretty nice with Wind
5:33
things look pretty nice with Wind forms uh in the center that's a visual
5:36
forms uh in the center that's a visual
5:36
forms uh in the center that's a visual studio most folks probably recognize
5:38
studio most folks probably recognize
5:39
studio most folks probably recognize that and a visual studio most of it
5:41
that and a visual studio most of it
5:41
that and a visual studio most of it today is built with WPF there are a few
5:44
today is built with WPF there are a few
5:44
today is built with WPF there are a few Legacy dialogues still hanging around um
5:47
Legacy dialogues still hanging around um
5:47
Legacy dialogues still hanging around um but more and more they're converting
5:48
but more and more they're converting
5:49
but more and more they're converting those out for to WPF in the latest
5:51
those out for to WPF in the latest
5:51
those out for to WPF in the latest Visual Studio previews even the uh
5:53
Visual Studio previews even the uh
5:53
Visual Studio previews even the uh options form is
5:56
options form is WPF and below that that's net Maui
6:00
WPF and below that that's net Maui
6:00
WPF and below that that's net Maui that's a weather sample app that the
6:02
that's a weather sample app that the
6:02
that's a weather sample app that the team created if you search for net Maui
6:04
team created if you search for net Maui
6:05
team created if you search for net Maui weather sample app you can find the
6:06
weather sample app you can find the
6:06
weather sample app you can find the GitHub Repro where that's hosted uh so
6:09
GitHub Repro where that's hosted uh so
6:09
GitHub Repro where that's hosted uh so they use that to create phone and
6:11
they use that to create phone and
6:11
they use that to create phone and desktop versions of the same app using
6:14
desktop versions of the same app using
6:14
desktop versions of the same app using the same
6:15
the same zaml and on the right side is a couple
6:18
zaml and on the right side is a couple
6:18
zaml and on the right side is a couple of wii3 examples the one on the top is
6:22
of wii3 examples the one on the top is
6:22
of wii3 examples the one on the top is the Windows File Explorer and the
6:23
the Windows File Explorer and the
6:23
the Windows File Explorer and the current versions of Windows 11 that's
6:25
current versions of Windows 11 that's
6:25
current versions of Windows 11 that's been built with wiu
6:27
been built with wiu I3 and below that is the Apple music app
6:31
I3 and below that is the Apple music app
6:31
I3 and below that is the Apple music app Apple recently released uh three
6:33
Apple recently released uh three
6:33
Apple recently released uh three different apps using wi UI 3 Apple music
6:36
different apps using wi UI 3 Apple music
6:36
different apps using wi UI 3 Apple music the Apple TV and Apple devices app those
6:39
the Apple TV and Apple devices app those
6:39
the Apple TV and Apple devices app those are all made with one ui3
6:45
today we'll start with the uh some
6:47
today we'll start with the uh some
6:47
today we'll start with the uh some advantages of Windows
6:49
advantages of Windows
6:49
advantages of Windows forms so Wind forms you get rapid UI
6:52
forms so Wind forms you get rapid UI
6:53
forms so Wind forms you get rapid UI development it's got a designer that
6:54
development it's got a designer that
6:54
development it's got a designer that folks are familiar with um it's been
6:56
folks are familiar with um it's been
6:56
folks are familiar with um it's been using it for many years to quickly drag
6:58
using it for many years to quickly drag
6:58
using it for many years to quickly drag and drop and get up and run it with an
7:00
and drop and get up and run it with an
7:00
and drop and get up and run it with an app very quickly uh it's got nice
7:03
app very quickly uh it's got nice
7:03
app very quickly uh it's got nice support for data binding you can set the
7:06
support for data binding you can set the
7:06
support for data binding you can set the properties to bind to a data source uh
7:09
properties to bind to a data source uh
7:09
properties to bind to a data source uh like I said earlier with the uh
7:10
like I said earlier with the uh
7:10
like I said earlier with the uh screenshots there's extensive third
7:12
screenshots there's extensive third
7:12
screenshots there's extensive third party control support for many years now
7:15
party control support for many years now
7:15
party control support for many years now uh there are modern and Legacy options
7:18
uh there are modern and Legacy options
7:18
uh there are modern and Legacy options so there you can still create today NET
7:20
so there you can still create today NET
7:20
so there you can still create today NET Framework when forms apps if you need to
7:22
Framework when forms apps if you need to
7:22
Framework when forms apps if you need to Target some older operating systems that
7:24
Target some older operating systems that
7:24
Target some older operating systems that are no longer supported but you still
7:26
are no longer supported but you still
7:26
are no longer supported but you still got customers running on those and then
7:28
got customers running on those and then
7:28
got customers running on those and then there's also the modern net win forms so
7:31
there's also the modern net win forms so
7:31
there's also the modern net win forms so on net 8 today you can create a new Wind
7:34
on net 8 today you can create a new Wind
7:34
on net 8 today you can create a new Wind forms app and it's much faster than the
7:36
forms app and it's much faster than the
7:36
forms app and it's much faster than the old NET Framework looks a little bit
7:38
old NET Framework looks a little bit
7:38
old NET Framework looks a little bit more modern it's not quite the same as
7:40
more modern it's not quite the same as
7:40
more modern it's not quite the same as WPF or even winui today but it looks a
7:43
WPF or even winui today but it looks a
7:43
WPF or even winui today but it looks a little bit better than the older Wind
7:46
little bit better than the older Wind
7:46
little bit better than the older Wind forms and you get like I said much
7:48
forms and you get like I said much
7:48
forms and you get like I said much better performance and in net 9 with aot
7:52
better performance and in net 9 with aot
7:52
better performance and in net 9 with aot oread of time compiling things are going
7:54
oread of time compiling things are going
7:54
oread of time compiling things are going to get even faster faster load times
7:56
to get even faster faster load times
7:56
to get even faster faster load times smaller memory footprint for all your
7:58
smaller memory footprint for all your
7:58
smaller memory footprint for all your apps so um make sure if you've got any
8:01
apps so um make sure if you've got any
8:01
apps so um make sure if you've got any legacy. NET Framework Wind forms apps
8:04
legacy. NET Framework Wind forms apps
8:04
legacy. NET Framework Wind forms apps you look at the net upgrade tool to see
8:06
you look at the net upgrade tool to see
8:06
you look at the net upgrade tool to see about migrating those and take advantage
8:08
about migrating those and take advantage
8:08
about migrating those and take advantage of some of the modern. net
8:12
of some of the modern. net
8:12
of some of the modern. net features uh it's still under active
8:14
features uh it's still under active
8:14
features uh it's still under active development today there's a Dev teams
8:16
development today there's a Dev teams
8:16
development today there's a Dev teams working on new features uh they're
8:18
working on new features uh they're
8:18
working on new features uh they're working on some accessibility some more
8:20
working on some accessibility some more
8:20
working on some accessibility some more improvements for high DPI monitors um
8:23
improvements for high DPI monitors um
8:23
improvements for high DPI monitors um and actually the dark mode on there I
8:25
and actually the dark mode on there I
8:25
and actually the dark mode on there I should take a question mark off of that
8:27
should take a question mark off of that
8:27
should take a question mark off of that uh last week when I was at vs live I saw
8:29
uh last week when I was at vs live I saw
8:29
uh last week when I was at vs live I saw a demo of the dark mode that they're
8:31
a demo of the dark mode that they're
8:31
a demo of the dark mode that they're working on for net9 and it looks really
8:33
working on for net9 and it looks really
8:33
working on for net9 and it looks really great and so the road map is add on
8:36
great and so the road map is add on
8:36
great and so the road map is add on GitHub you can go to the Wind forms repo
8:39
GitHub you can go to the Wind forms repo
8:39
GitHub you can go to the Wind forms repo under.net and check out the road map of
8:41
under.net and check out the road map of
8:41
under.net and check out the road map of what's coming in the next release and
8:43
what's coming in the next release and
8:43
what's coming in the next release and some releases beyond that and the best
8:46
some releases beyond that and the best
8:46
some releases beyond that and the best thing about Windows forms is that you
8:49
thing about Windows forms is that you
8:49
thing about Windows forms is that you know every C or VP developer is already
8:51
know every C or VP developer is already
8:51
know every C or VP developer is already a Wind forms developer you don't have to
8:53
a Wind forms developer you don't have to
8:53
a Wind forms developer you don't have to know a separate language for the UI it's
8:56
know a separate language for the UI it's
8:56
know a separate language for the UI it's all in just C or VB code
9:02
so a few uh drawbacks and then we'll
9:04
so a few uh drawbacks and then we'll
9:04
so a few uh drawbacks and then we'll take a quick look at a demo of a
9:05
take a quick look at a demo of a
9:05
take a quick look at a demo of a winforms project so like we saw in the
9:09
winforms project so like we saw in the
9:09
winforms project so like we saw in the first screenshot if you don't do any
9:11
first screenshot if you don't do any
9:11
first screenshot if you don't do any extra theming or third party control
9:13
extra theming or third party control
9:13
extra theming or third party control integration it does look a little bit
9:15
integration it does look a little bit
9:15
integration it does look a little bit dated it looks like Windows forms when
9:16
dated it looks like Windows forms when
9:17
dated it looks like Windows forms when you look at a form um you don't get the
9:19
you look at a form um you don't get the
9:19
you look at a form um you don't get the GPU acceleration like you get with the
9:21
GPU acceleration like you get with the
9:21
GPU acceleration like you get with the examl based languages there's no C++
9:25
examl based languages there's no C++
9:25
examl based languages there's no C++ support if you're a C++ Dev you need to
9:27
support if you're a C++ Dev you need to
9:27
support if you're a C++ Dev you need to look at uh wiui to do something
9:30
look at uh wiui to do something
9:31
look at uh wiui to do something there and there's no current support for
9:33
there and there's no current support for
9:33
there and there's no current support for Windows themes in dark mode although
9:35
Windows themes in dark mode although
9:35
Windows themes in dark mode although that is coming probably very soon um
9:38
that is coming probably very soon um
9:38
that is coming probably very soon um it's looking like it'll make it in net
9:41
it's looking like it'll make it in net
9:41
it's looking like it'll make it in net L and it's also not great for touch and
9:43
L and it's also not great for touch and
9:44
L and it's also not great for touch and Pen input so if that's a big factor in
9:46
Pen input so if that's a big factor in
9:46
Pen input so if that's a big factor in your requirements uh informance is
9:49
your requirements uh informance is
9:49
your requirements uh informance is probably not the best way to
9:51
probably not the best way to
9:51
probably not the best way to go so let's switch over to visual studio
9:54
go so let's switch over to visual studio
9:54
go so let's switch over to visual studio I've got a solution here with a bunch of
9:56
I've got a solution here with a bunch of
9:57
I've got a solution here with a bunch of different projects I've got a a project
10:00
different projects I've got a a project
10:00
different projects I've got a a project that's a net 8 Library I'm sorry to
10:02
that's a net 8 Library I'm sorry to
10:02
that's a net 8 Library I'm sorry to interrupt once again but we only see
10:04
interrupt once again but we only see
10:04
interrupt once again but we only see your
10:05
your slides okay did I
10:07
slides okay did I not perhaps you'll have to click on
10:10
not perhaps you'll have to click on
10:10
not perhaps you'll have to click on share your entire screen and maybe not
10:12
share your entire screen and maybe not
10:12
share your entire screen and maybe not the window that's oh entire screen I
10:15
the window that's oh entire screen I
10:15
the window that's oh entire screen I said share screen and entire screen and
10:19
said share screen and entire screen and
10:19
said share screen and entire screen and then the screen entire screen ah okay
10:22
then the screen entire screen ah okay
10:22
then the screen entire screen ah okay thank you
10:28
perfect got it yeah wec your Visual Studio thank you
10:31
it yeah wec your Visual Studio thank you
10:31
it yeah wec your Visual Studio thank you awesome thank you for the the
10:33
awesome thank you for the the
10:33
awesome thank you for the the tip all right so the shared project is a
10:37
tip all right so the shared project is a
10:37
tip all right so the shared project is a net 8 library and that is shared by all
10:40
net 8 library and that is shared by all
10:40
net 8 library and that is shared by all the other projects in the solution
10:42
the other projects in the solution
10:42
the other projects in the solution except for the wwp which we probably
10:44
except for the wwp which we probably
10:44
except for the wwp which we probably won't look at because wwp Camp
10:48
won't look at because wwp Camp
10:48
won't look at because wwp Camp reference. net8 which is one of the the
10:50
reference. net8 which is one of the the
10:50
reference. net8 which is one of the the major drawbacks that I talk about in the
10:51
major drawbacks that I talk about in the
10:51
major drawbacks that I talk about in the longer version of this but in here I've
10:54
longer version of this but in here I've
10:54
longer version of this but in here I've got just an item and a category for our
10:56
got just an item and a category for our
10:56
got just an item and a category for our shopping list app and then uh the
10:59
shopping list app and then uh the
10:59
shopping list app and then uh the helpers just load some dummy data for
11:02
helpers just load some dummy data for
11:02
helpers just load some dummy data for each of the
11:03
each of the apps let's take a look at the Wind forms
11:08
app that's the code behind and let's
11:11
app that's the code behind and let's
11:11
app that's the code behind and let's look at the
11:13
look at the uh designer
11:32
all right well let's just run it quick
11:33
all right well let's just run it quick
11:33
all right well let's just run it quick to look at the
11:41
design so it's a simple form and it
11:44
design so it's a simple form and it
11:44
design so it's a simple form and it looks like Wind forms we've just got a
11:46
looks like Wind forms we've just got a
11:46
looks like Wind forms we've just got a list of products here with category name
11:50
list of products here with category name
11:50
list of products here with category name a little check boox to indicate if we've
11:51
a little check boox to indicate if we've
11:51
a little check boox to indicate if we've purchased it yet and we can add new
11:54
purchased it yet and we can add new
11:54
purchased it yet and we can add new items by selecting a category
12:00
and click the add button and it adds it
12:02
and click the add button and it adds it
12:02
and click the add button and it adds it to the
12:03
to the list so we can Mark other items is
12:05
list so we can Mark other items is
12:05
list so we can Mark other items is purchased and we can delete
12:10
items so that's simple enough and it's
12:12
items so that's simple enough and it's
12:12
items so that's simple enough and it's all done with h data binding so we've
12:14
all done with h data binding so we've
12:14
all done with h data binding so we've got a some code in here that just loads
12:17
got a some code in here that just loads
12:17
got a some code in here that just loads up the categories loads up the items and
12:19
up the categories loads up the items and
12:19
up the categories loads up the items and sets the data source for the items and
12:20
sets the data source for the items and
12:21
sets the data source for the items and categories on the grid and the combo
12:25
categories on the grid and the combo
12:25
categories on the grid and the combo box so it takes very little code to set
12:27
box so it takes very little code to set
12:27
box so it takes very little code to set all that up
12:30
all that up and we're up and
12:34
running let's talk about WPF
12:39
running let's talk about WPF
12:39
running let's talk about WPF next so some advantages of
12:42
next so some advantages of
12:42
next so some advantages of WPF so it uses um zaml for the UI it's
12:47
WPF so it uses um zaml for the UI it's
12:47
WPF so it uses um zaml for the UI it's XML based language um a lot of people
12:51
XML based language um a lot of people
12:51
XML based language um a lot of people have been uh using zaml and WPF for a
12:53
have been uh using zaml and WPF for a
12:53
have been uh using zaml and WPF for a number of years but if you're not
12:54
number of years but if you're not
12:54
number of years but if you're not familiar with it uh Visual Studio has a
12:57
familiar with it uh Visual Studio has a
12:57
familiar with it uh Visual Studio has a examl designer where you can see what
12:58
examl designer where you can see what
12:58
examl designer where you can see what you're build thing either as you write
13:00
you're build thing either as you write
13:00
you're build thing either as you write the the code in the zaml or you can
13:02
the the code in the zaml or you can
13:02
the the code in the zaml or you can click and drag things in the designer
13:05
click and drag things in the designer
13:05
click and drag things in the designer itself to build your UI um it also has
13:08
itself to build your UI um it also has
13:08
itself to build your UI um it also has zaml hot reload for UI debugging which
13:10
zaml hot reload for UI debugging which
13:10
zaml hot reload for UI debugging which lets you make small changes in your zaml
13:13
lets you make small changes in your zaml
13:13
lets you make small changes in your zaml code while the app is running and it
13:15
code while the app is running and it
13:15
code while the app is running and it immediately reflects the changes in the
13:17
immediately reflects the changes in the
13:17
immediately reflects the changes in the UI so kind of like when you're doing
13:20
UI so kind of like when you're doing
13:20
UI so kind of like when you're doing some some web debugging you can make
13:22
some some web debugging you can make
13:22
some some web debugging you can make changes and they automatically get
13:24
changes and they automatically get
13:24
changes and they automatically get reloaded if you're working angular and
13:27
reloaded if you're working angular and
13:27
reloaded if you're working angular and react um it's got a GPU accelerated UI
13:30
react um it's got a GPU accelerated UI
13:30
react um it's got a GPU accelerated UI so it renders uh UI changes more quickly
13:33
so it renders uh UI changes more quickly
13:33
so it renders uh UI changes more quickly it runs those on the GPU instead of the
13:36
it runs those on the GPU instead of the
13:36
it runs those on the GPU instead of the CPU so you can offload some of your
13:38
CPU so you can offload some of your
13:38
CPU so you can offload some of your processing uh uses the directex
13:42
processing uh uses the directex
13:42
processing uh uses the directex pipeline uh it's got rich data binding
13:44
pipeline uh it's got rich data binding
13:44
pipeline uh it's got rich data binding and you can take advantage of the mvvm
13:47
and you can take advantage of the mvvm
13:47
and you can take advantage of the mvvm pattern for binding create your view
13:49
pattern for binding create your view
13:49
pattern for binding create your view models bind them to your view you don't
13:52
models bind them to your view you don't
13:52
models bind them to your view you don't dive into the mvvm pattern here but I
13:54
dive into the mvvm pattern here but I
13:54
dive into the mvvm pattern here but I give another talk on that that um Dives
13:58
give another talk on that that um Dives
13:58
give another talk on that that um Dives Real deep into that uses the mbv toolkit
14:01
Real deep into that uses the mbv toolkit
14:01
Real deep into that uses the mbv toolkit which is part of the Microsoft Community
14:04
which is part of the Microsoft Community
14:04
which is part of the Microsoft Community toolkit um it's got modern and Legacy
14:07
toolkit um it's got modern and Legacy
14:07
toolkit um it's got modern and Legacy support like Windows forms so you can
14:09
support like Windows forms so you can
14:09
support like Windows forms so you can create NET Framework WPF apps or the new
14:12
create NET Framework WPF apps or the new
14:12
create NET Framework WPF apps or the new modern. net 8 WPF apps and just like
14:16
modern. net 8 WPF apps and just like
14:16
modern. net 8 WPF apps and just like Windows forms you get better performance
14:18
Windows forms you get better performance
14:18
Windows forms you get better performance with the new net 8 and there's the net
14:21
with the new net 8 and there's the net
14:21
with the new net 8 and there's the net Upgrade Assistant to upgrade your
14:23
Upgrade Assistant to upgrade your
14:23
Upgrade Assistant to upgrade your framework
14:25
framework projects uh it's also got good third
14:27
projects uh it's also got good third
14:27
projects uh it's also got good third partyy control and Library support like
14:29
partyy control and Library support like
14:29
partyy control and Library support like Windows forms uh you can get some
14:31
Windows forms uh you can get some
14:31
Windows forms uh you can get some theming that way or some more Rich
14:33
theming that way or some more Rich
14:33
theming that way or some more Rich controls a lot of graphs and reports
14:35
controls a lot of graphs and reports
14:35
controls a lot of graphs and reports come through thirdparty
14:37
come through thirdparty
14:37
come through thirdparty controls yeah it's under active
14:40
controls yeah it's under active
14:40
controls yeah it's under active development uh Windows 11 theming
14:42
development uh Windows 11 theming
14:42
development uh Windows 11 theming support is actually coming in net 9 so
14:44
support is actually coming in net 9 so
14:44
support is actually coming in net 9 so you get your light and your dark theme
14:46
you get your light and your dark theme
14:46
you get your light and your dark theme and all the controls look a little bit
14:48
and all the controls look a little bit
14:48
and all the controls look a little bit more modern more like the wiui controls
14:51
more modern more like the wiui controls
14:51
more modern more like the wiui controls do today and I'll show a demo of that as
14:54
do today and I'll show a demo of that as
14:54
do today and I'll show a demo of that as well I have a net 8 and a net 9 version
14:57
well I have a net 8 and a net 9 version
14:57
well I have a net 8 and a net 9 version of my WPF project and see the
15:00
of my WPF project and see the
15:00
of my WPF project and see the differences and it's being positioned by
15:02
differences and it's being positioned by
15:02
differences and it's being positioned by Microsoft as one of the top choices to
15:05
Microsoft as one of the top choices to
15:05
Microsoft as one of the top choices to build uh Native apps today so if you're
15:07
build uh Native apps today so if you're
15:07
build uh Native apps today so if you're looking for Native Enterprise apps um
15:10
looking for Native Enterprise apps um
15:10
looking for Native Enterprise apps um it's really great with multi- window
15:12
it's really great with multi- window
15:12
it's really great with multi- window apps um if you have big app with
15:15
apps um if you have big app with
15:15
apps um if you have big app with multiple windows the window management
15:17
multiple windows the window management
15:17
multiple windows the window management and WPF is much better than in wiui
15:20
and WPF is much better than in wiui
15:20
and WPF is much better than in wiui today um but some
15:23
today um but some drawbacks there's the the zaml learning
15:25
drawbacks there's the the zaml learning
15:25
drawbacks there's the the zaml learning curve uh if you're not familiar with
15:28
curve uh if you're not familiar with
15:28
curve uh if you're not familiar with zaml it does take a little bit of
15:29
zaml it does take a little bit of
15:29
zaml it does take a little bit of getting us to compared to just building
15:31
getting us to compared to just building
15:31
getting us to compared to just building a Wind forms app or maybe working in
15:35
a Wind forms app or maybe working in
15:35
a Wind forms app or maybe working in JavaScript uh just like wind fors there
15:37
JavaScript uh just like wind fors there
15:37
JavaScript uh just like wind fors there no C++ support no dark mode switching
15:40
no C++ support no dark mode switching
15:40
no C++ support no dark mode switching yet but that's coming very soon
15:42
yet but that's coming very soon
15:42
yet but that's coming very soon definitely in net
15:44
definitely in net 9 uh no support for the fluent design
15:48
9 uh no support for the fluent design
15:48
9 uh no support for the fluent design which is kind of changing with net 9 as
15:50
which is kind of changing with net 9 as
15:50
which is kind of changing with net 9 as well it's getting uh closer to what you
15:52
well it's getting uh closer to what you
15:52
well it's getting uh closer to what you get with one UI and the windows 11 look
15:54
get with one UI and the windows 11 look
15:54
get with one UI and the windows 11 look and
15:55
and feel uh it's better than touch and Pen
15:58
feel uh it's better than touch and Pen
15:58
feel uh it's better than touch and Pen input and wooden forms but it's it
16:00
input and wooden forms but it's it
16:00
input and wooden forms but it's it wasn't built with the touch and pen in
16:03
wasn't built with the touch and pen in
16:03
wasn't built with the touch and pen in mind like the uwp and wood UI apps
16:07
mind like the uwp and wood UI apps
16:07
mind like the uwp and wood UI apps are and same with the UI performance
16:09
are and same with the UI performance
16:09
are and same with the UI performance it's it's better than Windows forms but
16:11
it's it's better than Windows forms but
16:11
it's it's better than Windows forms but still not quite as good as as when UI
16:16
today let's take a look at this project
16:19
today let's take a look at this project
16:19
today let's take a look at this project so I've got WPF 8 and
16:23
so I've got WPF 8 and
16:23
so I've got WPF 8 and n look at the eight one first
16:29
so this looks a little bit more modern
16:31
so this looks a little bit more modern
16:31
so this looks a little bit more modern still not quite as good as maybe some
16:33
still not quite as good as maybe some
16:33
still not quite as good as maybe some apps you've seen today from the
16:35
apps you've seen today from the
16:35
apps you've seen today from the Microsoft
16:36
Microsoft store but it's the same basic concept
16:38
store but it's the same basic concept
16:38
store but it's the same basic concept we've got some controls for adding items
16:40
we've got some controls for adding items
16:40
we've got some controls for adding items at the top and then we've got a grid to
16:42
at the top and then we've got a grid to
16:42
at the top and then we've got a grid to list
16:44
list them let's run this one quickly before
16:47
them let's run this one quickly before
16:47
them let's run this one quickly before we look at the other
16:56
one the same basic idea I got check
16:59
one the same basic idea I got check
16:59
one the same basic idea I got check boxes delete
17:07
rows and I can select some
17:09
can select some different options from there and I can
17:12
different options from there and I can
17:12
different options from there and I can add
17:19
items so it's the same kind of logic as
17:23
items so it's the same kind of logic as
17:23
items so it's the same kind of logic as the wind fors app I've got code behind
17:26
the wind fors app I've got code behind
17:26
the wind fors app I've got code behind that's just doing some basic data
17:29
that's just doing some basic data
17:29
that's just doing some basic data binding so I'm loading by items and
17:32
binding so I'm loading by items and
17:32
binding so I'm loading by items and categories and I'm just setting the data
17:35
categories and I'm just setting the data
17:35
categories and I'm just setting the data source on my view and my combo box so
17:38
source on my view and my combo box so
17:38
source on my view and my combo box so the grid view list View and the combo
17:41
the grid view list View and the combo
17:41
the grid view list View and the combo box gets set and got Logic for ADD and
17:44
box gets set and got Logic for ADD and
17:44
box gets set and got Logic for ADD and delete there's no save implemented and
17:47
delete there's no save implemented and
17:47
delete there's no save implemented and there's a clear that happens every time
17:49
there's a clear that happens every time
17:49
there's a clear that happens every time you add an item that clears the boxes at
17:51
you add an item that clears the boxes at
17:51
you add an item that clears the boxes at the
17:52
the top so the net 91 is exactly the same
17:56
top so the net 91 is exactly the same
17:56
top so the net 91 is exactly the same except currently in preview you have to
17:59
except currently in preview you have to
17:59
except currently in preview you have to add some code to your app. zaml
18:03
add some code to your app. zaml
18:03
add some code to your app. zaml which is shared logic throughout the app
18:06
which is shared logic throughout the app
18:06
which is shared logic throughout the app and all this is doing in here is it's
18:09
and all this is doing in here is it's
18:09
and all this is doing in here is it's importing this fluent. zaml to be used
18:13
importing this fluent. zaml to be used
18:13
importing this fluent. zaml to be used as the
18:15
as the style so if we run this one for net
18:22
9 we'll see things look a little bit
18:26
9 we'll see things look a little bit
18:26
9 we'll see things look a little bit different one thing you'll notice is it
18:28
different one thing you'll notice is it
18:28
different one thing you'll notice is it picked up my dark mode automatically I
18:30
picked up my dark mode automatically I
18:30
picked up my dark mode automatically I have dark mode applied on my system and
18:32
have dark mode applied on my system and
18:32
have dark mode applied on my system and it got that and everything else looks a
18:34
it got that and everything else looks a
18:34
it got that and everything else looks a little bit more rounded the controls are
18:37
little bit more rounded the controls are
18:37
little bit more rounded the controls are rounded like
18:41
Windows Styles getting picked up and
18:44
Windows Styles getting picked up and
18:44
Windows Styles getting picked up and everything works exactly the same the
18:46
everything works exactly the same the
18:46
everything works exactly the same the rest of the code is all the same except
18:47
rest of the code is all the same except
18:48
rest of the code is all the same except for importing that
18:49
for importing that style can remove rows check items
19:02
all right let's hop back to the
19:05
all right let's hop back to the
19:05
all right let's hop back to the slides and we'll talk
19:08
slides and we'll talk
19:08
slides and we'll talk about
19:11
about wii3 now wiui 3 uh is part of the
19:14
wii3 now wiui 3 uh is part of the
19:14
wii3 now wiui 3 uh is part of the Windows app
19:16
Windows app SDK and so the controls in there they
19:19
SDK and so the controls in there they
19:19
SDK and so the controls in there they use the windows 11 FL design
19:22
use the windows 11 FL design
19:22
use the windows 11 FL design today um the features and the controls
19:26
today um the features and the controls
19:26
today um the features and the controls are all the same as what you had in wwp
19:28
are all the same as what you had in wwp
19:28
are all the same as what you had in wwp with a few exceptions of things that
19:30
with a few exceptions of things that
19:30
with a few exceptions of things that were still being ported over but most of
19:32
were still being ported over but most of
19:32
were still being ported over but most of those have made their way into wiui at
19:35
those have made their way into wiui at
19:35
those have made their way into wiui at this point um one of the advantages of
19:39
this point um one of the advantages of
19:39
this point um one of the advantages of wiui over uwp is that there's more
19:42
wiui over uwp is that there's more
19:42
wiui over uwp is that there's more frequent updates with uwp it was tied to
19:45
frequent updates with uwp it was tied to
19:45
frequent updates with uwp it was tied to uh Windows versions in the windows SDK
19:47
uh Windows versions in the windows SDK
19:47
uh Windows versions in the windows SDK so you had to wait for a new version of
19:49
so you had to wait for a new version of
19:49
so you had to wait for a new version of Windows to ship before you get updates
19:51
Windows to ship before you get updates
19:51
Windows to ship before you get updates to your your app framework with wiui it
19:54
to your your app framework with wiui it
19:54
to your your app framework with wiui it ships in a separate SDK and they ship uh
19:57
ships in a separate SDK and they ship uh
19:57
ships in a separate SDK and they ship uh several releases a year for Windows app
19:59
several releases a year for Windows app
19:59
several releases a year for Windows app SDK um so some features of some recent
20:03
SDK um so some features of some recent
20:03
SDK um so some features of some recent releases uh 1.2 1.4 for at Zam Islands
20:08
releases uh 1.2 1.4 for at Zam Islands
20:08
releases uh 1.2 1.4 for at Zam Islands uh those are C++ only right now um so
20:11
uh those are C++ only right now um so
20:11
uh those are C++ only right now um so that's sharing components between uh say
20:14
that's sharing components between uh say
20:14
that's sharing components between uh say WPF and uh wi UI uh the theming some
20:20
WPF and uh wi UI uh the theming some
20:20
WPF and uh wi UI uh the theming some theming enhancements came out in 1.2 and
20:22
theming enhancements came out in 1.2 and
20:22
theming enhancements came out in 1.2 and 1.4 uh
20:24
1.4 uh notifications so some apis to do windows
20:27
notifications so some apis to do windows
20:27
notifications so some apis to do windows notifications came out
20:29
notifications came out
20:29
notifications came out and an app window which improves the
20:31
and an app window which improves the
20:31
and an app window which improves the windowing support that I mentioned with
20:33
windowing support that I mentioned with
20:33
windowing support that I mentioned with WPF so you can do some multi- window
20:36
WPF so you can do some multi- window
20:36
WPF so you can do some multi- window things but it's still not quite as
20:37
things but it's still not quite as
20:37
things but it's still not quite as powerful as what you we can do with WPF
20:39
powerful as what you we can do with WPF
20:39
powerful as what you we can do with WPF and Wind
20:40
and Wind forms and it added a media
20:43
forms and it added a media
20:43
forms and it added a media player and then 1.5 brought a highly
20:46
player and then 1.5 brought a highly
20:46
player and then 1.5 brought a highly anticipated control the maps control and
20:49
anticipated control the maps control and
20:49
anticipated control the maps control and also some layout layout
20:52
also some layout layout
20:52
also some layout layout improvements and then
20:54
improvements and then
20:54
improvements and then 1.6 is coming out shortly I think early
20:57
1.6 is coming out shortly I think early
20:57
1.6 is coming out shortly I think early September that should ship
20:59
September that should ship
20:59
September that should ship uh the big feature coming there is uh
21:01
uh the big feature coming there is uh
21:01
uh the big feature coming there is uh Native aot or head of time compiling
21:04
Native aot or head of time compiling
21:04
Native aot or head of time compiling which will give you that faster startup
21:05
which will give you that faster startup
21:05
which will give you that faster startup time a lot of apps are saying you're
21:07
time a lot of apps are saying you're
21:07
time a lot of apps are saying you're starting 50% faster and uh lot smaller
21:11
starting 50% faster and uh lot smaller
21:11
starting 50% faster and uh lot smaller assembly size um when you distribute
21:14
assembly size um when you distribute
21:14
assembly size um when you distribute your oneui app you can either include
21:16
your oneui app you can either include
21:16
your oneui app you can either include the entire framework with your app or
21:19
the entire framework with your app or
21:19
the entire framework with your app or just distribute your app and rely on the
21:20
just distribute your app and rely on the
21:20
just distribute your app and rely on the pre-installed framework when you just
21:23
pre-installed framework when you just
21:23
pre-installed framework when you just distribute your app they're seeing
21:25
distribute your app they're seeing
21:25
distribute your app they're seeing packages that are eight times smaller
21:27
packages that are eight times smaller
21:27
packages that are eight times smaller for deployment so it's a big improvement
21:30
for deployment so it's a big improvement
21:30
for deployment so it's a big improvement with
21:31
with aot and they're also working on some
21:33
aot and they're also working on some
21:33
aot and they're also working on some improvements for title bar customization
21:35
improvements for title bar customization
21:35
improvements for title bar customization uh some binding and intellisense changes
21:38
uh some binding and intellisense changes
21:38
uh some binding and intellisense changes and they're doing some uh ground workor
21:40
and they're doing some uh ground workor
21:40
and they're doing some uh ground workor for some of the 1.7 controls that are on
21:43
for some of the 1.7 controls that are on
21:43
for some of the 1.7 controls that are on the way and you can check out the entire
21:45
the way and you can check out the entire
21:45
the way and you can check out the entire road map on GitHub under the Windows app
21:48
road map on GitHub under the Windows app
21:48
road map on GitHub under the Windows app SDK
21:50
SDK repo uh you also have Rich data binding
21:52
repo uh you also have Rich data binding
21:52
repo uh you also have Rich data binding like you have with WPF using mvvm
21:56
like you have with WPF using mvvm
21:56
like you have with WPF using mvvm pattern uh it's great for touch and Pen
21:59
pattern uh it's great for touch and Pen
21:59
pattern uh it's great for touch and Pen input is really built for that kind of
22:02
input is really built for that kind of
22:02
input is really built for that kind of input you can do upgrades from WP using
22:05
input you can do upgrades from WP using
22:05
input you can do upgrades from WP using the net Upgrade Assistant it'll tell you
22:07
the net Upgrade Assistant it'll tell you
22:07
the net Upgrade Assistant it'll tell you uh what changes you need to make for an
22:10
uh what changes you need to make for an
22:10
uh what changes you need to make for an upgrade and when UI is really being
22:13
upgrade and when UI is really being
22:13
upgrade and when UI is really being positioned as the top choice for
22:14
positioned as the top choice for
22:15
positioned as the top choice for preventors to build native Windows apps
22:17
preventors to build native Windows apps
22:17
preventors to build native Windows apps today uh and they're trying to prove
22:18
today uh and they're trying to prove
22:19
today uh and they're trying to prove that by you know building their own
22:21
that by you know building their own
22:21
that by you know building their own built-in apps like the file explorer and
22:23
built-in apps like the file explorer and
22:23
built-in apps like the file explorer and having partners like uh apple and Adobe
22:26
having partners like uh apple and Adobe
22:26
having partners like uh apple and Adobe release wiui apps as well
22:31
few drawbacks quickly uh there's no zaml
22:34
few drawbacks quickly uh there's no zaml
22:34
few drawbacks quickly uh there's no zaml UI designer that's probably the biggest
22:36
UI designer that's probably the biggest
22:36
UI designer that's probably the biggest drawback if you're not comfortable
22:37
drawback if you're not comfortable
22:37
drawback if you're not comfortable building UI with saml uh you have to
22:40
building UI with saml uh you have to
22:40
building UI with saml uh you have to code it all by hand and there's no
22:42
code it all by hand and there's no
22:42
code it all by hand and there's no preview to see what you're building
22:44
preview to see what you're building
22:44
preview to see what you're building until you actually run the app um
22:47
until you actually run the app um
22:47
until you actually run the app um there's no F or Visual Basic built in uh
22:50
there's no F or Visual Basic built in uh
22:50
there's no F or Visual Basic built in uh there's C and C++ only with wi UI uh if
22:55
there's C and C++ only with wi UI uh if
22:55
there's C and C++ only with wi UI uh if you're coming from WP uh there's no Xbox
22:57
you're coming from WP uh there's no Xbox
22:57
you're coming from WP uh there's no Xbox or Hollow support with wiui although
23:00
or Hollow support with wiui although
23:00
or Hollow support with wiui although Hollow lens has been deprecated and I
23:02
Hollow lens has been deprecated and I
23:02
Hollow lens has been deprecated and I haven't heard of too many people
23:03
haven't heard of too many people
23:03
haven't heard of too many people building Xbox apps anymore other than
23:07
building Xbox apps anymore other than
23:07
building Xbox apps anymore other than games and there's no built-in data
23:09
games and there's no built-in data
23:09
games and there's no built-in data validation like you had with wwp where
23:11
validation like you had with wwp where
23:11
validation like you had with wwp where it chose the little indicators if you
23:13
it chose the little indicators if you
23:13
it chose the little indicators if you didn't follow the required field or
23:14
didn't follow the required field or
23:14
didn't follow the required field or there's some custom formatting needed
23:16
there's some custom formatting needed
23:16
there's some custom formatting needed for your data entry um that's something
23:19
for your data entry um that's something
23:19
for your data entry um that's something that hopefully should be coming at some
23:20
that hopefully should be coming at some
23:20
that hopefully should be coming at some point it's the top requested feature
23:22
point it's the top requested feature
23:22
point it's the top requested feature other than the uh the UI
23:25
other than the uh the UI
23:25
other than the uh the UI designer let's let's see we've got a few
23:27
designer let's let's see we've got a few
23:27
designer let's let's see we've got a few minutes left let's quickly take a
23:29
minutes left let's quickly take a
23:29
minutes left let's quickly take a look at the wiui
23:33
look at the wiui project so this one if I open it up
23:36
project so this one if I open it up
23:36
project so this one if I open it up you'll see there's no preview no
23:37
you'll see there's no preview no
23:37
you'll see there's no preview no designer it's all just the zaml so all
23:40
designer it's all just the zaml so all
23:41
designer it's all just the zaml so all this is built the same as WPF the same
23:43
this is built the same as WPF the same
23:43
this is built the same as WPF the same layout we've got a stack panel for the
23:45
layout we've got a stack panel for the
23:45
layout we've got a stack panel for the controls at the top and the list for the
23:48
controls at the top and the list for the
23:48
controls at the top and the list for the the list of
23:49
the list of items and for this one I used the mvvm
23:52
items and for this one I used the mvvm
23:52
items and for this one I used the mvvm pattern and I have a view model with all
23:54
pattern and I have a view model with all
23:54
pattern and I have a view model with all my
23:56
my data and this uses
23:59
data and this uses the uh mvvm toolkit from Microsoft and
24:02
the uh mvvm toolkit from Microsoft and
24:02
the uh mvvm toolkit from Microsoft and if you get the code out of my GitHub
24:04
if you get the code out of my GitHub
24:04
if you get the code out of my GitHub under Alvin Ashcraft I have a speaking
24:05
under Alvin Ashcraft I have a speaking
24:05
under Alvin Ashcraft I have a speaking repo all the codes out there you can
24:07
repo all the codes out there you can
24:07
repo all the codes out there you can grab it and play with it but let's run
24:10
grab it and play with it but let's run
24:10
grab it and play with it but let's run this one we have a couple
24:18
minutes and it looks kind of similar to
24:21
minutes and it looks kind of similar to
24:21
minutes and it looks kind of similar to the the modern looking WPF it also
24:23
the the modern looking WPF it also
24:23
the the modern looking WPF it also automatically picked up my dark
24:27
theme and can add some
24:32
items I can select and
24:39
delete and it works just the
24:43
same now while we have a couple minutes
24:46
same now while we have a couple minutes
24:46
same now while we have a couple minutes let me I'm not going to have time to run
24:48
let me I'm not going to have time to run
24:48
let me I'm not going to have time to run through the Maui slid slides but let me
24:50
through the Maui slid slides but let me
24:50
through the Maui slid slides but let me just
24:51
just run the M app actually I didn't set my
24:55
run the M app actually I didn't set my
24:55
run the M app actually I didn't set my wi eyes the startups that was still the
24:56
wi eyes the startups that was still the
24:56
wi eyes the startups that was still the WPF that's why it looked like that
24:59
WPF that's why it looked like that
24:59
WPF that's why it looked like that we run
25:01
we run that so this is the Wii app there we go
25:06
that so this is the Wii app there we go
25:06
that so this is the Wii app there we go that looks better so we get more kind of
25:08
that looks better so we get more kind of
25:08
that looks better so we get more kind of animation with
25:10
animation with our drop
25:13
downs and when I add an item it kind of
25:16
downs and when I add an item it kind of
25:16
downs and when I add an item it kind of Fades into the grid I don't know how
25:18
Fades into the grid I don't know how
25:18
Fades into the grid I don't know how well that comes over in the streaming
25:19
well that comes over in the streaming
25:19
well that comes over in the streaming but instead of just popping up it get a
25:21
but instead of just popping up it get a
25:21
but instead of just popping up it get a little bit of animation with things and
25:23
little bit of animation with things and
25:23
little bit of animation with things and if I hit delete things should slide up
25:25
if I hit delete things should slide up
25:25
if I hit delete things should slide up instead just disappearing you get a
25:27
instead just disappearing you get a
25:27
instead just disappearing you get a little animation
25:32
that's your wiui and I'm going to quickly switch to
25:35
wiui and I'm going to quickly switch to
25:35
wiui and I'm going to quickly switch to Maui show you that Maui when it builds
25:38
Maui show you that Maui when it builds
25:38
Maui show you that Maui when it builds for Windows creates a wiui app so this
25:40
for Windows creates a wiui app so this
25:40
for Windows creates a wiui app so this is going to look very similar to wiui
25:44
is going to look very similar to wiui
25:44
is going to look very similar to wiui except that Maui by default uses a lot
25:47
except that Maui by default uses a lot
25:47
except that Maui by default uses a lot of purple in their UI so we'll have some
25:49
of purple in their UI so we'll have some
25:49
of purple in their UI so we'll have some purple buttons on this
26:02
I can delete I get the same kind of
26:03
I can delete I get the same kind of
26:03
I can delete I get the same kind of animations because this is just a wiui
26:06
animations because this is just a wiui
26:06
animations because this is just a wiui UI built with
26:08
UI built with Maui and the advantage with Maui is you
26:10
Maui and the advantage with Maui is you
26:10
Maui and the advantage with Maui is you can take the same zaml and you can
26:13
can take the same zaml and you can
26:13
can take the same zaml and you can deploy it to Windows iOS Android and
26:16
deploy it to Windows iOS Android and
26:16
deploy it to Windows iOS Android and even uh watches with Samsung
26:20
tysen all right let's hop back to the
26:22
tysen all right let's hop back to the
26:22
tysen all right let's hop back to the slides and we're going to have to
26:24
slides and we're going to have to
26:24
slides and we're going to have to quickly skip over Maui Maui like I said
26:26
quickly skip over Maui Maui like I said
26:26
quickly skip over Maui Maui like I said this crossplatform
26:28
this crossplatform uh it's got the AML
26:31
uh it's got the AML experience and drawbacks whenever you're
26:33
experience and drawbacks whenever you're
26:33
experience and drawbacks whenever you're doing crossplatform
26:34
doing crossplatform um you're going to lose a little bit of
26:36
um you're going to lose a little bit of
26:36
um you're going to lose a little bit of performance you you always have to do
26:38
performance you you always have to do
26:38
performance you you always have to do some kind of workarounds when you're
26:40
some kind of workarounds when you're
26:40
some kind of workarounds when you're doing some platform specific things that
26:42
doing some platform specific things that
26:42
doing some platform specific things that aren't supported on every
26:44
aren't supported on every
26:45
aren't supported on every platform and then the other
26:46
platform and then the other
26:46
platform and then the other crossplatform options that we're not
26:48
crossplatform options that we're not
26:48
crossplatform options that we're not talking about today laser hybrid you can
26:50
talking about today laser hybrid you can
26:50
talking about today laser hybrid you can embed in WTF Wind forms or Maui Uno
26:53
embed in WTF Wind forms or Maui Uno
26:53
embed in WTF Wind forms or Maui Uno platform and avalonia which Target
26:56
platform and avalonia which Target
26:56
platform and avalonia which Target everything that Maui does plus you can
26:57
everything that Maui does plus you can
26:57
everything that Maui does plus you can get to Linux
26:58
get to Linux and to the web with web assembly and the
27:01
and to the web with web assembly and the
27:01
and to the web with web assembly and the difference between these two the main
27:02
difference between these two the main
27:02
difference between these two the main difference is uno saml is a wi UI schema
27:06
difference is uno saml is a wi UI schema
27:06
difference is uno saml is a wi UI schema and avalonia is more like WPF so it's
27:09
and avalonia is more like WPF so it's
27:09
and avalonia is more like WPF so it's slightly different between
27:12
slightly different between
27:12
slightly different between those so choosing a framework we talked
27:15
those so choosing a framework we talked
27:15
those so choosing a framework we talked about some of the differences uh
27:16
about some of the differences uh
27:16
about some of the differences uh programming language if you're C++ or C
27:20
programming language if you're C++ or C
27:20
programming language if you're C++ or C or VB there's some different options
27:21
or VB there's some different options
27:21
or VB there's some different options based on that um do you need the drag
27:24
based on that um do you need the drag
27:24
based on that um do you need the drag and drop designer do you like daml do
27:26
and drop designer do you like daml do
27:26
and drop designer do you like daml do you not like daml um
27:28
you not like daml um
27:28
you not like daml um what what does your team feel
27:30
what what does your team feel
27:30
what what does your team feel comfortable with what can they get to
27:31
comfortable with what can they get to
27:31
comfortable with what can they get to Market with
27:32
Market with quickly do you need Legacy Windows
27:34
quickly do you need Legacy Windows
27:34
quickly do you need Legacy Windows support do you need touch support do you
27:36
support do you need touch support do you
27:36
support do you need touch support do you need crossplatform and long-term support
27:39
need crossplatform and long-term support
27:39
need crossplatform and long-term support if you don't obviously most people want
27:42
if you don't obviously most people want
27:42
if you don't obviously most people want to be supported for a long time but if
27:43
to be supported for a long time but if
27:43
to be supported for a long time but if you don't and you really want to do wwp
27:45
you don't and you really want to do wwp
27:45
you don't and you really want to do wwp it's still officially supported today
27:47
it's still officially supported today
27:47
it's still officially supported today but it is just in maintenance
27:49
but it is just in maintenance
27:49
but it is just in maintenance mode so you should go out look at the
27:52
mode so you should go out look at the
27:52
mode so you should go out look at the public road map for each of the
27:53
public road map for each of the
27:53
public road map for each of the Frameworks decide if the features meet
27:55
Frameworks decide if the features meet
27:55
Frameworks decide if the features meet your needs uh if wiui features meet your
27:57
your needs uh if wiui features meet your
27:57
your needs uh if wiui features meet your needs I think that's getting the most
27:59
needs I think that's getting the most
27:59
needs I think that's getting the most investment from the product teams right
28:01
investment from the product teams right
28:01
investment from the product teams right now um that's probably the way to go if
28:04
now um that's probably the way to go if
28:04
now um that's probably the way to go if they have what you're looking
28:06
they have what you're looking
28:06
they have what you're looking for and then just to wrap up some quick
28:09
for and then just to wrap up some quick
28:09
for and then just to wrap up some quick links uh you can get these slides out on
28:11
links uh you can get these slides out on
28:11
links uh you can get these slides out on my repo as well Alan Ashcraft on GitHub
28:14
my repo as well Alan Ashcraft on GitHub
28:14
my repo as well Alan Ashcraft on GitHub under
28:15
under speaking so I've got some pages on the
28:19
speaking so I've got some pages on the
28:19
speaking so I've got some pages on the learn website you can look at and um
28:22
learn website you can look at and um
28:22
learn website you can look at and um I've got in my browser if I switch to
28:24
I've got in my browser if I switch to
28:24
I've got in my browser if I switch to that
28:25
that quick this session for Microsoft build
28:28
quick this session for Microsoft build
28:28
quick this session for Microsoft build navigating wiui app development this
28:30
navigating wiui app development this
28:30
navigating wiui app development this does some good deep dives into um
28:33
does some good deep dives into um
28:33
does some good deep dives into um developing with wiui and WPF and some of
28:35
developing with wiui and WPF and some of
28:35
developing with wiui and WPF and some of the choices you can make there
28:38
the choices you can make there
28:38
the choices you can make there [Music]