XAML Extensible Application Markup Language. Manuel Naujoks (IB3)



Ähnliche Dokumente
Hochschule Karlsruhe Technik & Wirtschaft. XAML WPF per XML. Ausarbeitung. Manuel Naujoks 07/08

WPF. Übersicht. Komponenten & Frameworks Seite 1

GUI-Entwicklung 2: Windows Presentation Foundation

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

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

Thomas Claudius Huber. Alles, was Sie über XAML wissen müssen

WPF. Windows Presentation Foundation. Sven Hubert Student Partner Microsoft Academic Program

WPF Steuerelemente Listbox, ComboBox, ListView,

WINDOWS PRESENTATION FOUNDATION (WPF) Martin Kühn

Übung 1 mit C# 6.0 MATTHIAS RONCORONI

Windows Presentation Foundation - Crashkurs

Programmierung einer Windows Store App mit C# und XAML

Klausur GUI-Entwicklung WS10/11 1.Termin

Windows Presentation Foundation - Crashkurs

{ Light up the Web } Oliver Scheer. Evangelist Microsoft Deutschland

WPF: Viele bunte Smart Clients

Di 8.4. Silverlight: Windows Presentation Foundation für s Web. Christian Wenz

Cross-Platform Mobile mit.net

Kap. 35 Swing: Grundlagen Kap Swing: Hauptfenster

Projekt Xaml Konverter

Hauptseminar Technische Informationssysteme Sommersemester 2009 XML-GUI-Libraries und deren Einsatz in JAVA

Rich Internet Applications, Flex & Mate. (Ja, das ist Grafische Benutzeroberflächen!) Jakob Külzer jakob.kuelzer@gmail.

Jürgen Kotz Rouven Haban Simon Steckermeier. WCF, WPF und WF - Ein Überblick ADDISON-WESLEY. An imprint of Pearson Education

Silverlight for Windows Embedded. Martin Straumann / Stv. Business Unit Leiter Microsoft Technologien / Application developer

Die nächste Revolution in der modelgetriebenen Entwicklung?

Seminar Softwarearchitekturen SoSe Martin Schrage

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

Windows Presentation Foundation

.NET Speech API. Seminar Objektorientiertes Programmieren mit.net und C# Alexander Schubert

Windows Presentation Foundation

Mobile Development in.net mit Xamarin

Von Windows-Forms zu WPF mit Expression Blend? Thomas Müller conplement AG Nürnberg

Anspruchsvolle Client Lösungen mit der Windows Presentation Foundation, Silverlight und Surface. Oliver Scheer Microsoft Deutschland

Rene Schneider GEBIT Solutions GmbH. Integrity - ein innovatives Tool zur Acceptance-Test-Automatisierung

AJAX DRUPAL 7 AJAX FRAMEWORK. Was ist das Ajax Framework? Ein typischer Ablauf eines Ajax Requests Die Bestandteile des Ajax Frameworks.

GUI Programmierung in Java

Einführung Internettechnologien. - Clientseitige Programmierung -

Christian Kurz SWT Projekt WS 07/08

Rainer Stropek Karin Huber XAML. schnell + kompakt

VSTO Was gibt es Neues in der Office Entwicklung? Lars Keller netcreate OHG

WPF Bindung. Dr. Beatrice Amrhein

OERA OpenEdge Reference Architecture. Mike Fechner PUG Infotag 19. Mai 05 Frankfurt

Luca Piras SharePoint Specialist it-function software GmbH

Ich liebe Java && Ich liebe C# Rolf Borst

WPF Steuerelemente. Dr. Beatrice Amrhein

XML-Namensräume. Marc Monecke

Komponenten & Frameworks Seite 1

Webdesign Grundlagen. Michael Kraft, M.A. WS 2012/2013

Die Programmiersprache Java. Dr. Wolfgang Süß Thorsten Schlachter

C O C O O N. Wo ist Cocoon in die Apache Projekte einzureihen?

Große Übung Praktische Informatik 1

Ein UI in zwei Welten - Controls in HTML5 und WPF. Timo Korinth

1 Software Engineering 1

Einführung in Javadoc

ios, Android, WP7... Alle nativ auf einen Streich!

1. Übung zu "Numerik partieller Differentialgleichungen"

.NET als Microsofts Entwicklerplattform

Firefox Add-ons. Präsentation in WAP WS09/10 von Christoph ASCHBERGER, Andreas BERTOLIN, Robert MUTTER und Yunzhou XU

Verhindert, dass eine Methode überschrieben wird. public final int holekontostand() {...} public final class Girokonto extends Konto {...

C++ Grundlagen. ++ bedeutet Erweiterung zum Ansi C Standard. Hier wird eine Funktion eingeleitet

Design Patterns 2. Model-View-Controller in der Praxis

App-Entwicklung mit Titanium

How To: Wie entwickle ich mit SharpDevelop Anwendungen für die PocketPC-Platform

Office und.net - zwei Welten wachsen zusammen mit VSTO 3.0. Lars Keller netcreate OHG

Programmieren von Webinformationssystemen

Erstellung eines Frameworks für Shop Systeme im Internet auf Basis von Java

Javadoc. Programmiermethodik. Eva Zangerle Universität Innsbruck

1 Native C Code in C# Umgebung mit Visual Studio 2010

CORBA. Eine kurze Einführung. Common Object Request Broker Architecture. Ying Lu

Methoden zur Entwicklung von Industrial Product Service Systems (IPS 2 )

Applets I. Grundlagen der g Applet-Programmierung

Cross-Platform Mobile Development mit Xamarin Mark

Zentrale Objekte zur Programmierung graphischer Benutzeroberflächen (GUI)

Interaktionen in der Office-Welt mit.net

Source Code Konverter Online: (VB.net <-> C#) Kommerzielle Produkte (VB, C#, C++, Java) Code Nachbearbeitung in der Praxis...

Vorlesung Usability and Interaction. Sommersemester 2009

Computergrafik SS 2010 Oliver Vornberger. noch Kapitel 10: 2D-Grafik im Web. Vorlesung vom

Multimedia Engineering II - Übung 2

... MathML XHTML RDF

Sicherheit in Rich Internet Applications

Mit Cloud Power werden Sie zum

Inhaltsverzeichnis. Vorwort Einleitung. 1 Die Philosophie Die neue Technologie: XAML, WPF und Silverlight 47

360.NET. Jan Schenk Developer Evangelist Web/Live Microsoft Deutschland

Dokumentation zu Pocket NeuroNet

Willkommen zur Vorlesung. Objektorientierte Programmierung Vertiefung - Java

Begleitendes Praktikum zur Vorlesung Künstliche Intelligenz

GUI Programmierung mit Qt

C# im Vergleich zu Java

Cross Plattform App Developement. Simon Groth

C# 2000 Expression Beispielcodes für Konsolen- und Formularanwendung

.NET-Networking 2 Windows Communication Foundation

Ein Blick voraus. des Autors von C++: Bjarne Stroustrup Conrad Kobsch

Prof. Dr. Uwe Schmidt. 21. August Aufgaben zur Klausur Objektorientierte Programmierung im SS 2007 (IA 252)

Kurzfassung der Studienarbeit

Eclipse User Interface Guidelines

Verbesserung des Prototyping Prozesses von Infotainment Systemen mit der Hilfe von Adobe Flash und Flex

Lokale Installation von DotNetNuke 4 ohne IIS

Google Android API. User Interface. Eine knappe Einführung

Die Windows Workflow Foundation in Microsoft.NET 3.0

Transkript:

Extensible Application Markup Language Manuel Naujoks (IB3)

Einführung Beschreibungssprachen Vorteile Nachteile Agenda technisch Aufbau Kompilierung Verarbeitung zur Laufzeit Routed Events Zusammenfassung 2 von 24

Beschreibungssprachen Vorteile Nachteile EINFÜHRUNG 3 von 24

Beschreibungssprachen für Oberflächen XUL MXML LZX XHTML ZUML SwingML (XML User Interface Language) (MX Markup Language) (Laszlo XML) (Extensible Hypertext Markup Language) (ZK User Interface Markup Language) (Swing Markup Language) 4 von 24

Beschreibungssprache Extensible Application Markup Language XML Syntax Instanziierung von Objekten.NET 3.0 (Windows Presentation Foundation) Deklarative Oberflächenbeschreibung Austauschformat für Entwickler und Designer Trennung von Logik und Aussehen des UI 5 von 24

Vorteile Kompilierung, Laden zur Laufzeit Verwendung (WPF, WF, Silverlight) Sehr gute Tool-Unterstützung Microsoft Visual Studio Microsoft Expression Studio Alle Vorteile von.net Sprach-Unabhängigkeit Umfang von.net Quellen: Grafik-Silverlight: http://www.microsoft.com/silverlight/ 6 von 24

Nachteile Geht nur für.net Keine Plattformunabhängigkeit Keine Cascading Style Sheets Lösungen Mono eface (OpenSource.NET Framework) ( & WPF für Java) Quellen: Grafik-Mono: http://de.wikipedia.org/wiki/mono-projekt Grafik-eFace: http://www.soyatec.com/eface/ 7 von 24

Aufbau Kompilierung Verarbeitung zur Laufzeit Routed Events TECHNISCH 8 von 24

Aufbau Window1.xaml <Window x:class="wpfapplication1.window1" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="Window1" Height="300" Width="300"> <Grid> </Grid> </Window> http://schemas.microsoft.com/winfx/2006/xaml /presentation (WPF Elemente) http://schemas.microsoft.com/winfx/2006/xaml (System.Windows.Markup) Eigene Namespaces clr-namespace:system;assembly=mscorlib 9 von 24

Aufbau Window1.xaml <Window x:class="wpfapplication1.window1" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="Window1" Height="300" Width="300"> <Grid> <Button Height="100" Width="200" Name="myButton"> Hallo Welt! </Button> </Grid> </Window> 10 von 24

Aufbau Window1.xaml <Window x:class="wpfapplication1.window1" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="Window1" Height="300" Width="300"> <Grid> <Button Height="100" Width="200" Name="myButton"> <StackPanel Width="150"> <Button Content="Klick mich..."/> <TextBlock> Hallo Welt! </TextBlock> <TextBox/> </StackPanel> </Button> </Grid> </Window> 11 von 24

Aufbau Window1.xaml.cs using... namespace WpfApplication1 { /// <summary> /// Interaction logic for Window1.xaml /// </summary> public partial class Window1 : Window { public Window1() { InitializeComponent(); } } } Code Behind File (C#) 12 von 24

Aufbau Window1.g.cs #pragma checksum "..\..\Window1.xaml" "{406ea660-64cf-4c82-b6f0-42d48172a799}" "AB4CDA123E53A53945B84FC6C78C2C0E" //------------------------------------------------------------------------------ // <auto-generated> // This code was generated by a tool. // Runtime Version:2.0.50727.1378 // // Changes to this file may cause incorrect behavior and will be lost if // the code is regenerated. // </auto-generated> //------------------------------------------------------------------------------... public partial class Window1 : System.Windows.Window, System.Windows.Markup.IComponentConnector { public partial class Window1:System.Windows.Window internal System.Windows.Controls.Button mybutton; internal System.Windows.Controls.Button mybutton; private bool _contentloaded;... Generated Code File (C#) 13 von 24

Kompilierung MSBuild BAML Binary Application Markup Language Objekt-Hierarchie.g.cs Generated Code.g.resources Generated Angelehnt an: http://www.devcamp.at/content/documents/devcamp07_wunderwaffe_.pdf Assembly 14 von 24

Verarbeitung zur Laufzeit Laden von oder BAML Inhalt über URI Application.LoadComponent (Uri) : Object Application.LoadComponent (Object, Uri) Laden von Inhalt aus Stream XamlReader.Load (Stream) : Object Zugriff auf Elemente der Zielkomponente? 15 von 24

Verarbeitung zur Laufzeit public partial class Window1 : System.Windows.Window, System.Windows.Markup.IComponentConnector public void InitializeComponent() { if (_contentloaded) { return; } _contentloaded = true; System.Uri resourcelocater = new System.Uri("/WpfApplication1;component/window1.xaml", System.UriKind.Relative); } Generated Code File System.Windows.Application.LoadComponent(this, resourcelocater); void System.Windows.Markup.IComponentConnector.Connect( int connectionid, object target) { switch (connectionid) { case 1: this.mybutton = ((System.Windows.Controls.Button)(target)); return; } this._contentloaded = true; } 16 von 24

Routed Events Direkter Event Click Bubbling Event MouseLeftButtonDown Tunneling Event PreviewMouseLeftButtonDown Mit Prefix Preview Nicht jedes Event hat ein Bubbling oder Tunneling Event! MSDN Library! 17 von 24

EventHandler <Button PreviewMouseLeftButtonDown="Button_PreviewMouseLeftButtonDown_1"/> <x:code> <![CDATA[ private void Button_PreviewMouseLeftButtonDown_1(object sender, MouseButtonEventArgs e) { MessageBox.Show("Hallo"); e.handled = true; } ]]> </x:code> Inline EventHandler Code Behind EventHandler 18 von 24

Zuweisung von EventHandlern void System.Windows.Markup.IComponentConnector.Connect( int connectionid, object target) { switch (connectionid) { case 1: this.mybutton = ((System.Windows.Controls.Button)(target)); this.mybutton.click += new System.Windows.RoutedEventHandler(this.Button_Click); return; } this._contentloaded = true; } Generated Code Datei Zugriff auf Element auch ohne Namen 19 von 24

Routed Events <Button MouseLeftButtonDown="Button_MouseLeftButtonDown" PreviewMouseLeftButtonDown="Button_PreviewMouseLeftButtonDown" Click="Button_Click"> <StackPanel MouseLeftButtonDown="StackPanel_MouseLeftButtonDown" PreviewMouseLeftButtonDown="StackPanel_PreviewMouseLeftButtonDown"> <Image Width="130" Source="D:\temp\billg1.jpg" MouseLeftButtonDown="Image_MouseLeftButtonDown" PreviewMouseLeftButtonDown="Image_PreviewMouseLeftButtonDown"/> <TextBlock FontSize="15">Der große Bill!</TextBlock> </StackPanel> </Button> 20 von 24

Routed Events Mausklick auf das Bild Button_PreviewMouseLeftButtonDown StackPanel_PreviewMouseLeftButtonDown Tunneling Image_PreviewMouseLeftButtonDown Image_MouseLeftButtonDown StackPanel_MouseLeftButtonDown Button_Click (e.handled = true) Bubbling Button_MouseLeftButtonDown 21 von 24

ZUSAMMENFASSUNG 22 von 24

Zusammenfassung Kompilierung BAML, Code Behind Class, Verarbeitung zur Laufzeit.NET 3.0 WPF, Silverlight, Mono, eface Beliebige Objekt-Hierarchien xmlns:my="clr-namespace:mynamespace;assembly=wpfapp" Bubbeling, Tunneling, Direct Events Bessere Zusammenarbeit von Designern und Entwicklern. 23 von 24

Weitere Informationen http://msdn2.microsoft.com/en-us/library/ms747122.aspx WPF http://msdn2.microsoft.com/en-us/library/ms754130.aspx eface http://www.soyatec.com/eface/ Silverlight http://msdn2.microsoft.com/en-us/library/bb404300.aspx nama0017@hs-karlsruhe.de halllo-welt.spaces.live.com 24 von 24