SlideShare ist ein Scribd-Unternehmen logo
1 von 42
Downloaden Sie, um offline zu lesen
Moderne Business Apps mit
XAML
oder:
Mit WPF für die Zukunft geplant
Christian Nagel
csharp.christiannagel.com
Goals
• WPF heute
• Warum Universal Windows Platform (UWP)
• Einfacher Wechsel der Client-Technologie
• Non-goals:
• Fancy Design
Agenda
WPF and
UWP
Sharing
Code
Moving
to UWP
Christian Nagel
• Training
• Coaching
• Consulting
• Development
• Microsoft MVP
• www.cninnovation.com
• csharp.christiannagel.com
WPF and UWP?
1
All your users
upgraded to
Windows 10!
Rewriting
my desktop
application
takes years

Desktop Bridge
• Supports Build 14393, Anniversary Edition
• Deployment
• Use Windows Runtime APIs
• Add UWP Features over time
Warum UWP
• UWP ist die Microsoft Desktop-Plattform
• Deployment (APPX)
• Windows 10 S
• Modernes Styling
• Runs Native
• Windows 10 verwendet UWP
• Neue Features in der Windows Runtime (Updates 2 x im Jahr)
UWP Features
• Easy Deployment/Updates
• Native, Compiled Binding
• Layout
• RelativePanel, AdaptiveTrigger, NavigationView
• Data Sharing
• Tile Updates, Notifications
• Multiple Windows
• Sideloaded Installation
Sharing Code
2
Demo
• View-Model
• Commands
• Dependency Injection mit WPF und UWP
Libraries
• .NET Standard Libraries
• Successor for Portable Libraries (Legacy)
• .NET Standard 2.0
• .NET Framework 4.6.1
• UWP Build 16299
• Xamarin.iOS 10.14, Xamarin.Android 8.0
• https://docs.microsoft.com/dotnet/standard/net-standard
MVVM Pattern
View
View-Model
Model
Views
• XAML
• Wenig Code-Behind
• Styles in Resources
Views
• XAML
• Wenig Code-Behind
• User Controls
• Styles in Resource
Dictionaries
Binding
• Binding to Lists und Elements
• Binding to Properties & Commands
• Where to put the BindingContext?
• Pages / User Controls
Binding
• Binding mit Listen und Elementen
• Binding zu Properties & Commands
• Wohin mit dem BindingContext?
• Pages / User Controls
• Data Context wird an User Controls
weitergereicht
Models
• INotifyPropertyChanged
• Benachrichtigung bei Änderungen
Models
• INotifyPropertyChanged
• Benachrichtigung bei Änderungen
View-Models
• Basisklassen für gemeinsame Features
• Progress-Information
• Error-Handling
• Master/Detail
• Keine UI Typen im View-Model
• Properties und Commands für das View
View-Models
• Basisklassen für gemeinsame Features
• Progress-Information
• Error-Handling
• Master/Detail
• Keine UI Typen im View-Model
• Properties und Commands für das View
View-Models für Items
• Items in Listen brauchen oft Commands
• View-Models können in Listen verwendet werden
Commands
• ICommand Interface
• Commands to Delegates
Commands
• ICommand Interface
• Commands to Delegates
Dependency Injection
Dependency Injection
• Einfache View-Models
• Services unabhängig von View-Models
• Services über DI injecten
• Unabhängigkeit von Plattform-Features
• Dependency Injection Container erleichtern Dependency
Management
Compiled Binding - Demo
What you’ve seen
• .NET Standard
• MVVM removes strong dependencies
• DI Container makes DI easy
• Compiled Binding with UWP
Moving to the
Universal Windows Platform
UWP - Modern Controls
• Layout
• NavigationView
• RelativePanel
• Hub
• Flip View
• Elements and Lists
• TextBox mit Header
• CommandBar/AppBar
• Inking
• AutoSuggest
UWP – Compiled Binding
• Compiler Errors
• Schneller (ohne Reflection)
• Kein DataContext
• ViewModel an User Controls weitergeben
Sharing Code
• .NET Standard 2.0
• Windows 10 Fall Creators Update
• .NET Standard 1.4
• Windows 10+
• Das gleiche View-Model
• Die gleichen Services
• Contracts für Platform-specific Services
Summary
• Sharing Code mit WPF und UWP
• MVVM Pattern
• Dependency Injection
• UWP für Desktop Applikationen
Questions?
More Information (1)
• https://blogs.windows.com
• Sample Code:
• https://github.com/CNinnovation
More Information (2)
• https://github.com/ProfessionalCSharp
• https://csharp.christiannagel.com
• https://www.cninnovation.com
• Training & Coaching
Thank you!

Weitere ähnliche Inhalte

Was ist angesagt?

MVC 1.0: Zeitgemäße Webanwendungen in JavaEE
MVC 1.0: Zeitgemäße Webanwendungen in JavaEEMVC 1.0: Zeitgemäße Webanwendungen in JavaEE
MVC 1.0: Zeitgemäße Webanwendungen in JavaEE
OPEN KNOWLEDGE GmbH
 

Was ist angesagt? (6)

Frontendtechnologien Fuer Ria V1.0
Frontendtechnologien Fuer Ria V1.0Frontendtechnologien Fuer Ria V1.0
Frontendtechnologien Fuer Ria V1.0
 
MVC 1.0: Zeitgemäße Webanwendungen in JavaEE
MVC 1.0: Zeitgemäße Webanwendungen in JavaEEMVC 1.0: Zeitgemäße Webanwendungen in JavaEE
MVC 1.0: Zeitgemäße Webanwendungen in JavaEE
 
JavaScript-Erweiterungen für UI und UX
JavaScript-Erweiterungen für UI und UXJavaScript-Erweiterungen für UI und UX
JavaScript-Erweiterungen für UI und UX
 
Skischulverwaltung
SkischulverwaltungSkischulverwaltung
Skischulverwaltung
 
Technologievergleich für RIA
Technologievergleich für RIATechnologievergleich für RIA
Technologievergleich für RIA
 
Workshopergebnisse
WorkshopergebnisseWorkshopergebnisse
Workshopergebnisse
 

Ähnlich wie Moderne Business Apps mit XAML - oder mit WPF für die Zukunft geplant

Creasoft Akademie - Windows 8 aus Entwicklersicht
Creasoft Akademie - Windows 8 aus EntwicklersichtCreasoft Akademie - Windows 8 aus Entwicklersicht
Creasoft Akademie - Windows 8 aus Entwicklersicht
Creasoft AG
 
Das Microsoft AppStudio (beta)
Das Microsoft AppStudio (beta)Das Microsoft AppStudio (beta)
Das Microsoft AppStudio (beta)
Peter Nowak
 

Ähnlich wie Moderne Business Apps mit XAML - oder mit WPF für die Zukunft geplant (20)

Robuste Design Systems mit Storybook und Angular: vom Konzept zur lebendigen ...
Robuste Design Systems mit Storybook und Angular: vom Konzept zur lebendigen ...Robuste Design Systems mit Storybook und Angular: vom Konzept zur lebendigen ...
Robuste Design Systems mit Storybook und Angular: vom Konzept zur lebendigen ...
 
Creasoft-Akademie - Mobile Multiplattform Apps
Creasoft-Akademie - Mobile Multiplattform AppsCreasoft-Akademie - Mobile Multiplattform Apps
Creasoft-Akademie - Mobile Multiplattform Apps
 
Bernhard Wick - appserver.io - code.talks 2015
 Bernhard Wick - appserver.io - code.talks 2015 Bernhard Wick - appserver.io - code.talks 2015
Bernhard Wick - appserver.io - code.talks 2015
 
Nefos: Nefos Mobile iPad App
Nefos: Nefos Mobile iPad AppNefos: Nefos Mobile iPad App
Nefos: Nefos Mobile iPad App
 
AdminCamp2017 - ApplicationInsights
AdminCamp2017 - ApplicationInsightsAdminCamp2017 - ApplicationInsights
AdminCamp2017 - ApplicationInsights
 
Roslyn DDC Kompakt 2014
Roslyn DDC Kompakt 2014Roslyn DDC Kompakt 2014
Roslyn DDC Kompakt 2014
 
Nanoservice Architekturen
Nanoservice ArchitekturenNanoservice Architekturen
Nanoservice Architekturen
 
Citrix Day 2014: APPDNA
Citrix Day 2014: APPDNACitrix Day 2014: APPDNA
Citrix Day 2014: APPDNA
 
Progressive Web Apps mit Angular
Progressive Web Apps mit AngularProgressive Web Apps mit Angular
Progressive Web Apps mit Angular
 
Desktop Containers 12: Next Generation of ZENworks Application Virtualization
Desktop Containers 12: Next Generation of ZENworks Application VirtualizationDesktop Containers 12: Next Generation of ZENworks Application Virtualization
Desktop Containers 12: Next Generation of ZENworks Application Virtualization
 
Agile Entwicklungsumgebung mit DVCS, Jenkins und Trello - Agile Bodensee Konf...
Agile Entwicklungsumgebung mit DVCS, Jenkins und Trello - Agile Bodensee Konf...Agile Entwicklungsumgebung mit DVCS, Jenkins und Trello - Agile Bodensee Konf...
Agile Entwicklungsumgebung mit DVCS, Jenkins und Trello - Agile Bodensee Konf...
 
SharePoint 2013 – Tech-Track
SharePoint 2013 – Tech-TrackSharePoint 2013 – Tech-Track
SharePoint 2013 – Tech-Track
 
OSMC 2009 | NagVis 1.4 - What´s new by Lars Michaelsen
OSMC 2009 | NagVis 1.4 - What´s new by Lars MichaelsenOSMC 2009 | NagVis 1.4 - What´s new by Lars Michaelsen
OSMC 2009 | NagVis 1.4 - What´s new by Lars Michaelsen
 
Serverless Application Framework
Serverless Application FrameworkServerless Application Framework
Serverless Application Framework
 
2005 - NRW Conf: Design, Entwicklung und Tests
2005 - NRW Conf: Design, Entwicklung und Tests2005 - NRW Conf: Design, Entwicklung und Tests
2005 - NRW Conf: Design, Entwicklung und Tests
 
Anwendungsmodernisierung mit Oracle Application Express (APEX)
Anwendungsmodernisierung mit Oracle Application Express (APEX)Anwendungsmodernisierung mit Oracle Application Express (APEX)
Anwendungsmodernisierung mit Oracle Application Express (APEX)
 
Agile Softwareentwicklung mit Rails
Agile Softwareentwicklung mit RailsAgile Softwareentwicklung mit Rails
Agile Softwareentwicklung mit Rails
 
ASP.NET Core – Troublemaker oder Problemsolver?
ASP.NET Core – Troublemaker oder Problemsolver?ASP.NET Core – Troublemaker oder Problemsolver?
ASP.NET Core – Troublemaker oder Problemsolver?
 
Creasoft Akademie - Windows 8 aus Entwicklersicht
Creasoft Akademie - Windows 8 aus EntwicklersichtCreasoft Akademie - Windows 8 aus Entwicklersicht
Creasoft Akademie - Windows 8 aus Entwicklersicht
 
Das Microsoft AppStudio (beta)
Das Microsoft AppStudio (beta)Das Microsoft AppStudio (beta)
Das Microsoft AppStudio (beta)
 

Mehr von Christian Nagel

Mehr von Christian Nagel (20)

Async streams
Async streamsAsync streams
Async streams
 
C# 9 and 10 - What's cool?
C# 9 and 10 - What's cool?C# 9 and 10 - What's cool?
C# 9 and 10 - What's cool?
 
Azure App Configuration with .NET applications
Azure App Configuration with .NET applicationsAzure App Configuration with .NET applications
Azure App Configuration with .NET applications
 
C# 9 - What's the cool stuff? - BASTA! Spring 2021
C# 9 - What's the cool stuff? - BASTA! Spring 2021C# 9 - What's the cool stuff? - BASTA! Spring 2021
C# 9 - What's the cool stuff? - BASTA! Spring 2021
 
.NET Core Foundations - Dependency Injection, Logging & Configuration - BASTA...
.NET Core Foundations - Dependency Injection, Logging & Configuration - BASTA....NET Core Foundations - Dependency Injection, Logging & Configuration - BASTA...
.NET Core Foundations - Dependency Injection, Logging & Configuration - BASTA...
 
C# 8 in Libraries and Applications - BASTA! Frankfurt 2020
C# 8 in Libraries and Applications - BASTA! Frankfurt 2020C# 8 in Libraries and Applications - BASTA! Frankfurt 2020
C# 8 in Libraries and Applications - BASTA! Frankfurt 2020
 
Entity Framework Core 1.x/2.x Advanced
Entity Framework Core 1.x/2.x AdvancedEntity Framework Core 1.x/2.x Advanced
Entity Framework Core 1.x/2.x Advanced
 
Gemeinsame View-Models mit XAML Technologien
Gemeinsame View-Models mit XAML TechnologienGemeinsame View-Models mit XAML Technologien
Gemeinsame View-Models mit XAML Technologien
 
C# 8 in Libraries and Applications
C# 8 in Libraries and ApplicationsC# 8 in Libraries and Applications
C# 8 in Libraries and Applications
 
C# 8 and .NET Core 3
C# 8 and .NET Core 3C# 8 and .NET Core 3
C# 8 and .NET Core 3
 
.NET Core 3.0 - What's new?
.NET Core 3.0 - What's new?.NET Core 3.0 - What's new?
.NET Core 3.0 - What's new?
 
Adaptive Cards - User Interfaces with JSON
Adaptive Cards - User Interfaces with JSONAdaptive Cards - User Interfaces with JSON
Adaptive Cards - User Interfaces with JSON
 
Reference Semantik mit C# und .NET Core - BASTA 2019
Reference Semantik mit C# und .NET Core - BASTA 2019Reference Semantik mit C# und .NET Core - BASTA 2019
Reference Semantik mit C# und .NET Core - BASTA 2019
 
C# What's next? (7.x and 8.0)
C# What's next? (7.x and 8.0)C# What's next? (7.x and 8.0)
C# What's next? (7.x and 8.0)
 
C# 7.x What's new and what's coming with C# 8
C# 7.x What's new and what's coming with C# 8C# 7.x What's new and what's coming with C# 8
C# 7.x What's new and what's coming with C# 8
 
Blazor - The New Silverlight?
Blazor - The New Silverlight?Blazor - The New Silverlight?
Blazor - The New Silverlight?
 
Desktop Bridge with WPF - One way to build modern apps with WPF
Desktop Bridge with WPF - One way to build modern apps with WPFDesktop Bridge with WPF - One way to build modern apps with WPF
Desktop Bridge with WPF - One way to build modern apps with WPF
 
Reference Semantics with C# and .NET Core
Reference Semantics with C# and .NET CoreReference Semantics with C# and .NET Core
Reference Semantics with C# and .NET Core
 
C# - What's next
C# - What's nextC# - What's next
C# - What's next
 
Business Apps with the Universal Windows Platform
Business Apps with the Universal Windows PlatformBusiness Apps with the Universal Windows Platform
Business Apps with the Universal Windows Platform
 

Moderne Business Apps mit XAML - oder mit WPF für die Zukunft geplant