Matthias Fischer dotnetautor.de. Windows 8: Tablet, Telefon & Co.

Ähnliche Dokumente
Matthias Fischer dotnetautor.de. Windows-Phone und Windows-8-Apps: Shared Code mit C# und XAML

Universal-Apps. Gordon Breuer Senior IT Consultant Software Engineer / Architect msg systems ag. activevb Workshop

Matthias Fischer Say "Hello" to Windows Phone 8

Matthias Fischer MF IT Consult Überblick über die Windows- Phone-8-App-Entwicklung

MVVM in Windows 8 und Windows Phone 8

Model-View-ViewModel (MVVM)

CROSS PLATFORM DEVELOPMENT MIT PORTABLE CLASS LIBRARIES

Line-of-Business-Apps mit der Universal Windows Platform entwickeln. Thomas Claudius

Visual Studio 2012 Windows 8 und.net 4.5. Hans Peter Bornhauser, Noser Engineering AG Fachbereichsleiter.NET, Digicomp AG

Textbausteine. C# WPF-Framework Model-View-Viewmodel-Architektur Blog-Client-Applikation

Skalierbare Enterprise Architekturen für Universal Windows Platform Apps

VON MVC ZU MODEL-VIEW-VIEWMODEL

WPF und Silverlight Architektur

Übung 1 mit C# 6.0 MATTHIAS RONCORONI

WPF Steuerelemente. Dr. Beatrice Amrhein

Thomas Claudius Huber Trivadis AG. Silverlight 4.0 vier gewinnt?

Windows Phone 7.5. Grundlagen und fortgeschrittene Programmierung. von Ralf Ehlert, Gregor Woiwode. 1. Auflage

The app the crashes, before the breakpoint is reached: Code to the event:

WPF - Windows Presentation Foundation

Cross-Platform Mobile mit.net

Thomas Claudius Huber Trivadis Services AG. Endlich Cross-Platform: Universal- Windows-Apps für Windows 10

Windows Presentation Foundation

Einführung in die Windows Store App Entwicklung mit C# und XAML

Mit Cloud Power werden Sie zum

GUI-Entwicklung 2: Windows Presentation Foundation

XAML Extensible Application Markup Language. Manuel Naujoks (IB3)

Mobile App development mit Xamarin. Christian Hassa Andreas Willich TechTalk Software AG

WPF Steuerelemente Listbox, ComboBox, ListView,

.NET als Microsofts Entwicklerplattform

Kapitel 9 Schnittstellen

Thomas Claudius Huber. Asynchrone Programmierung mit C#

Vaadin 8 What s new Jakob Magun, Benjamin Schupp

Applikationsarchitektur modularer Rich Client-Anwendungen am Beispiel der Windows Presentation Foundation

Musterhafte Hilfe. Das Entwurfsmuster Model-View-View- Frameworks zum Trennen von Daten, Oberfläche und Geschäftslogik einer Anwendung.

Data Templates. Thomas Claudius Huber

Mobile Development in.net mit Xamarin

WPF Bindung. Dr. Beatrice Amrhein

Team Developer 6.3.NET

Entwicklung der Programmiersprache C#

Windows Presentation Foundation

ASYNC HARDCORE. Stefan Dirschnabel. #dncgn

Windows Presentation Foundation (WPF) -Grundlagen -Steuerelemente. Dr. Beatrice Amrhein

Senior Softwareentwickler/-berater.NET

Eine Business-Anwendung ist ohne Eingabevalidierung

Die S.O.L.I.D-Prinzipien für C# Entwickler Thomas Claudius

XAML Deep Dive. Mehr als "nur" WPF. Mathias Raacke Neovelop GmbH

Oliver Paulus, 7. Februar Spring Framework Einführung. Oliver Paulus, Was ist Spring?

Die Alternative zum Web-Form Modell

Der Beginn einer wunderbaren Freundschaft von Stefan Schnell

Vererbung und Polymorphie

Tipps und Hinweise zum Bezug der Beitragssatzdatei V5.0

Inhalt I. Blick in die Geschichte. .NET für kleine und grosse Applikationen

IT-Development & Consulting. Quo Vadis Microsoft? Multiplattform-Entwicklung mit.net. Axel Eckenberger, it-people it-solutions

Windows 8 Business-App-Entwicklung

NotesSession.GetPropertyBroker( )

Implementieren von Klassen

PHP objektorientiert

Ich liebe Java && Ich liebe C# Rolf Borst

Indigo vs. Juno. Was ist neu für Eclipse 4.x RCP Entwickler? Hauptseminar 2012

Daniel Greitens, maximago GmbH. Steuerelemententwicklung mit WPF / Silverlight / WP7

C# 6.0 und die.net Compiler Platform (Roslyn) Hans Peter Bornhauser

23. Januar, Zürich-Oerlikon

Richard Bubel & Martin Hentschel

Die SharePoint-Welt für den erfahrenen.net-entwickler. Fabian Moritz MVP Office SharePoint Server ITaCS GmbH

Application Frameworks and Componentware Wintersemester 2002/03. Komponentenbasierte Programmierung in Java

Realtime Anbindung an SAP ERP

CodedUI Gut vorbereitet ist halb getestet. Nico Orschel, AIT, DE Marc Müller, 4tecture, CH

Raber+Märcker Techno Summit 2014 Microsoft Dynamics NAV 2013 R2 Überblick und Hintergründe zu aktuellen Version.

MVVM (Model View ViewModel) in JavaFX

Umstellung eines ERP-Systems von Oracle Forms 6i auf.net/wpf. Stefan Basler / Tobias Lachmann schrempp edv GmbH

Multimedia im Netz Wintersemester 2012/13

Grenzübertritt. Um mit Visual Studio für ios zu entwickeln, ist ein wenig mehr nötig als die Xamarin- Bibliotheken. Mit C# für das iphone entwickeln

Umzug. ASP.NET-WebForms-Elemente in MVC weiterverwenden. Dr. Malte Clasen adesso AG

Javakurs für Fortgeschrittene

Silverlight, WPF. DataForms. Ribbon Controls. Silverlight 2.0 Die wichtigsten Komponenten im Layout Management 48. Datenzugriff leicht gemacht

ASP.NET 3.5 mit AJAX

Control Templates. Thomas Claudius Huber

Serialisierung und Deserialisierung Daten flexibel l speichern

Thomas Sillmann. Swift im Detail HANSER

Annotation based presentation models for view rendering and data binding with Linkki and Vaadin

ResilientSoftware Design Patterns

Objektorientierung. Marc Satkowski 20. November C# Kurs

Microsoft.NET Framework & Component Object Model. ein Vortrag von Florian Steuber

Seminar Softwarearchitekturen SoSe Martin Schrage

Info B VL 11: Innere Klassen/Collections

Resilient Software Design Patterns

Rainer Stropek cubido. Baumschule Expression Trees in C#, CLR und DLR

Java - Webapplikationen

Arbeitsblatt: Aufgaben zur Vorbereitung

Open-Source-Alternative Search Engine Lucene.NET 10 ASP.NET MVC 2 Die Neuerungen kritisch betrachtet

Rene Böing, Alexander Kuhn, Marc Wilmes Einführung in Spring und Hibernate

AVO Übung 4. AspectIX. 18. Januar 2005 (WS 2004) Andreas I. Schmied Universität Ulm Fakultät für Informatik

Modernisierung von Forms durch neues Look&Feel

Erzeugungsmuster. Kapselung der Objekt-Erzeugung

Klausur GUI-Entwicklung WS10/11 1.Termin

Senior Softwareentwickler/-berater.NET

Transkript:

Matthias Fischer dotnetautor.de Windows 8: Tablet, Telefon & Co.

Referentenvorstellung Consultant und Trainer.NET-Entwicklung seit 2001 ASP.NET, WCF, MVC4, SQL Server 2012 WPF, MVVM, Windows Phone 8, Windows 8 Autor (Auswahl) Carl Hanser Verlag, Addison-Wesley, Wrox, Windows.Developer Projekte / Apps OSMLogger, BatchUploader, MobileTech Conference usw. Matthias Fischer Material zu diesem Workshop : http://bit.ly/mfslides Mehr Informationen: www.dotnetautor.de WP 8 Seminare : dotnetautor.de/training/wp8 Kontakt : matthias@dotnetautor.de

Premium Developer Program Nokia Premium Developer Program = 99 USD/year developer.nokia.com/windowsphone developer.nokia.com/entwicklergeraet entwickler@nokia.com

Die Windows 8 Plattform

Shared WinRT Core Windows 8 Kernel (WinRT ca. 11.000 Member) Windows Phone 8 Kernel (WinPRT) 2.800 ca. 600

Plattformen aus Entwicklersicht Plattformen Managed Unmanaged Silverlight & XNA 1:1.NET API 4 WP Windows Phone 7.X zusätzliche WP8 API Managed C#/VB.NET XAML XNA Windows 8 Core Runtime (WinPRT) Windows 8 Runtime WinRT 1:1 Windows Phone Runtime (WinPRT) Win32 & COM Nativ C++ DIrectX Windows 8 Windows Phone 8.0

Shared Code Ctrl-C, Crtl-V Einfach und schnell, jedoch (fast) unmöglich zu warten Einzige Möglichkeit für XAML Design-Code-Share Linked Files Visual Studio 2012 bietet die Möglichkeit Quellcode durch Drag n Drop + Alt über Projekte zu verlinken Linked Files mit #if Blöcken Unter Umständen werden geringe Anpassungen benötigt, diese können mit Hilfe von #if #else #endif Blöcken angepasst werden Portable Class Library s (PCLs) Eingeführt mit Visual Studio 2012, elegante Möglichkeit für mehrere Plattformen gleichzeitig zu entwickeln, ohne die rohen Quelldateien zu sharen Nachteil: kleinste gemeinsame SubSet von Funktionen Plattform Adapter Abstraktion Erzeugen einer abstrakten Klasse Implementieren auf der jeweiligen Plattform

Shared Sources - PortableClassLibrary WP 7.X WP 8 Win8. NET for Windows Phone Async (Microsoft.Bcl.Async) WinRT bzw. WinPRT Async Gemeinsammes SubSet von.net 4 Phone und WinPRT KEIN Async verfügbar

Shared Sources - PortableClassLibrary WP 7.X WP 8 Win8 Lib WP 7.X PortableLib Plattform WP8+Win8 BclLib Windows Phone 7.X Windows Phone 8 Windows 8 C#/XAML

Simple Feed Client

Herunterladen des Feeds Verwendung der WebRequest-Klasse Zusammensetzen der URL Festlegen des Accept-Headers Asynchrones herunterladen der Antwort (await) string result = ""; var request = WebRequest.CreateHttp("http://dotnetautor.de/GetRssFeed); request.accept = "application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"; //request.headers[httprequestheader.acceptencoding] = "gzip"; var response = await request.getresponseasync(); using (var stream = response.getresponsestream()) { using (var reader = new StreamReader(stream)) { result = await reader.readtoendasync();

RSS Feed

Informationen extrahieren Eine Klasse, um die Feed Elemente zu speichern public class FeedItem { public string Title { get; set; public string Description { get; set; public string DatePublished { get; set; public string ArticleURL { get; set; Extrahieren der Items mit Hilfe von Linq2XML <chanel> <item> <title /> <pubdate /> <description /> < guid /> </ item> <item>... </ item>... </channel> var feed = XElement.Parse(result); var articles = from item in feed.descendants("item") select new FeedItem { Title = item.element("title").value, DatePublished = item.element("pubdate").value, Description = item.element("description").value, ArticleURL = item.element("guid").value ;

Presentation Model - MVVM Model View updates, may observe WPF Data Binding Presentation Controler Model ViewModel View.DataContext = ViewModel; http://blogs.msdn.com/b/johngossman/archive/2005/10/08/478683.aspx

Dependency Property Property Datenbindung Datenbindung (data binding) ist ein Mechanismus, um eine lose Kopplung zwischen der UI und der Anwendungslogik herzustellen Als Ziel für eine Datenbindung können nur Dependency Objekts verwendet werden. Als Quelle kann jedes Objekt verwendet werden. Wenn Änderungen automatisch an das Bindungsziel übermittelt werden sollen, muss entweder die Schnittstelle INotifyPropertyChanged oder ein Dependency Property verwendet werden. Die Bindung kann einseitig, beidseitig oder einmalig erfolgen. Binding Target Dependency Object One Time One Way Two Way One Way to Source Die Bindung kann in XAML oder im CodeBehind angelegt werden. Binding Source Object

Datenbindung Funktionsweise Eine Daten-Klasse, welche als Quelle für die Datenbindung verwendet wird, wird ViewModel genannt. Die Datenquelle wird festgelegt, indem der Eigenschaft DataContext eines UI-Containers (FrameworkElement) eine Instanz des ViewModels zugewiesen wird. Eigenschaften von UI Elementen innerhalb des Containers, sowie Eigenschaften des Containers können nun an Eigenschaften des ViewModels gebunden werden. FrameworkElement DataContext UIElement Property UIElement Property ViewModel Property Property

Datenbindung im XAML ViewModel-Klasse public class MyViewModel { public string TextProperty { get; set; Der Eigenschaft DataContext wird das ViewModel zugewiesen. MainContainer.DataContext = new MyViewModel {TextProperty = "Hello Word"; Die Bindung einer Eigenschaft des ViewModels zu einer Eigenschaft des UI-Elements erfolgt in der XAML Datei <Grid Name="MainContainer" > <TextBlock Name="ContentText" Text="{Binding TextPropety, Mode=OneWay" TextWrapping="Wrap" Style="{StaticResource PhoneTextTitle3Style" /> </Grid>

µmvvm Framework Komponenten für eine MVVM Anwendung DelegateCommand ViewModels (von ViewModelBase abgeleitet) DataBinding und CommandBinding Zur Vereinfachung der Erstellung der ViewModel-Klassen die Schnittstelle INotifyPropertyChanged in der Klasse ViewModelBase implementieren. public class ViewModelBase : INotifyPropertyChanged { public event PropertyChangedEventHandler PropertyChanged; protected virtual void OnPropertyChanged( [CallerMemberName] string propertyname = null) { if (PropertyChanged!= null) handler(this, new PropertyChangedEventArgs(propertyName));

DelegateCommand Die Implementierung für Kommandos mit Hilfe der Schnittstelle ICommand ist immer gleich. Um nicht jedes Mal eine eigene Klasse für jedes Kommando ausprogrammieren zu müssen, kann die folgende Klasse DelegateCommand als allgemeine Implementierung verwendet werden. public class DelegateCommand : ICommand { Func<object, bool> canexecute; Action<object> executeaction; public DelegateCommand(Action<object> executeaction) : this(executeaction, null) { public DelegateCommand(Action<object> executeaction, Func<object, bool> canexecute) { if (executeaction == null) { throw new ArgumentNullException("executeAction"); this.executeaction = executeaction; this.canexecute = canexecute; public bool CanExecute(object parameter) { bool result = true; if (canexecute!= null) { result = canexecute(parameter); return result; public event EventHandler CanExecuteChanged; public void RaiseCanExecuteChanged() { if (CanExecuteChanged!= null) { CanExecuteChanged (this, new EventArgs()); public void Execute(object parameter) { this.executeaction(parameter);

ViewModel public class FeedReaderViewModel : ViewModelBase { private ObservableCollection<FeedItem> _feeditems; public FeedReaderViewModel() { RefreshCommand = new DelegateCommand(async arg => { var res = await DataManager.Instance.UpdateFeed( "http://dotnetautor.de/getrssfeed"); FeedItems = new ObservableCollection<FeedItem>(res); ); public ObservableCollection<FeedItem> FeedItems { get { return _feeditems; set { if (_feeditems == value) return; _feeditems = value; OnPropertyChanged(); public DelegateCommand RefreshCommand { get; protected set;

Fragen? 21

Brauchen Sie Unterstützung bei.net, Silverlight, Lightswitch, WCF, WPF, ASP.NET, IIS, Windows 8 oder Windows Phone 8? Beratung bei Einführung, Migration und Betrieb (Vor-Ort-)Schulungen, Workshops Coaching (Vor-Ort Telefon E-Mail Online-Meeting) Support (Vor-Ort Telefon E-Mail Online-Meeting) Entwicklung von Prototypen und Lösung Matthias Fischer IT Consult http://www.dotnetautor.de.de Telefon +49 1520 1920 708 matthias@dotnetautor.de