If you want to build a Windows desktop application, you might be overwhelmed by the number of UI frameworks available. How do you choose the best one for your project and your skills? How do you compare the features, benefits, and drawbacks of each framework? How do you ensure your app is modern, native, and scalable? In this session, you will learn how to make an informed decision for your Windows desktop application by comparing Microsoft recommended UI frameworks for native development in 2024: WinUI, WPF, and Windows Forms.
🔗 Conference Website: https://softwarearchitecture.live
📺 CSharp TV - Dev Streaming Destination http://csharp.tv
🌎 C# Corner - Community of Software and Data Developers
https://www.c-sharpcorner.com
#CSharpTV #CSharpCorner #CSharp #SoftwareArchitectureConf
Show More Show Less View Video Transcript
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
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
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
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
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
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
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
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
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
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
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
10:05
your slides okay did I
10:07
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:26
perfect got
10:28
perfect got
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
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
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
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
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
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
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
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
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
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
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:04
rows and I
17:07
rows and I
17:07
rows and I can select some
17:09
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
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
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
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
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
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
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
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
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
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
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
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
23:56
my data and this uses
23:59
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
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
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
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:30
that's your
25:32
that's your
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
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
26:28
this crossplatform uh it's got the AML
26:30
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
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
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
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
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
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]


