Rheinwerk Computing < openbook > Rheinwerk Computing - Professionelle Bücher. Auch für Einsteiger.
Professionelle Bücher. Auch für Einsteiger.

Inhaltsverzeichnis
Vorwort zur 6. Auflage
1 Allgemeine Einführung in .NET
2 Grundlagen der Sprache C#
3 Das Klassendesign
4 Vererbung, Polymorphie und Interfaces
5 Delegates und Ereignisse
6 Strukturen und Enumerationen
7 Fehlerbehandlung und Debugging
8 Auflistungsklassen (Collections)
9 Generics – Generische Datentypen
10 Weitere C#-Sprachfeatures
11 LINQ
12 Arbeiten mit Dateien und Streams
13 Binäre Serialisierung
14 XML
15 Multithreading und die Task Parallel Library (TPL)
16 Einige wichtige .NET-Klassen
17 Projektmanagement und Visual Studio 2012
18 Einführung in die WPF und XAML
19 WPF-Layout-Container
20 Fenster in der WPF
21 WPF-Steuerelemente
22 Elementbindungen
23 Konzepte von WPF
24 Datenbindung
25 Weitere Möglichkeiten der Datenbindung
26 Dependency Properties
27 Ereignisse in der WPF
28 WPF-Commands
29 Benutzerdefinierte Controls
30 2D-Grafik
31 ADO.NET – Verbindungsorientierte Objekte
32 ADO.NET – Das Command-Objekt
33 ADO.NET – Der SqlDataAdapter
34 ADO.NET – Daten im lokalen Speicher
35 ADO.NET – Aktualisieren der Datenbank
36 Stark typisierte DataSets
37 Einführung in das ADO.NET Entity Framework
38 Datenabfragen des Entity Data Models (EDM)
39 Entitätsaktualisierung und Zustandsverwaltung
40 Konflikte behandeln
41 Plain Old CLR Objects (POCOs)
Stichwort

Download:
- Beispiele, ca. 62,4 MB

Jetzt Buch bestellen
Ihre Meinung?

Spacer
Visual C# 2012 von Andreas Kühnel
Das umfassende Handbuch
Buch: Visual C# 2012

Visual C# 2012
Rheinwerk Computing
1402 S., 6., aktualisierte und erweiterte Auflage 2013, geb., mit DVD
49,90 Euro, ISBN 978-3-8362-1997-6
Pfeil 28 WPF-Commands
Pfeil 28.1 Allgemeine Beschreibung
Pfeil 28.1.1 Ein einführendes Beispiel
Pfeil 28.2 Vordefinierte WPF-Commands
Pfeil 28.3 Commands verwenden
Pfeil 28.3.1 Command-Bindungen einrichten
Pfeil 28.3.2 Lokalität der Befehlsbindung
Pfeil 28.3.3 Befehlsbindung mit Programmcode
Pfeil 28.3.4 Das Befehlsziel mit »CommandTarget« angeben
Pfeil 28.3.5 Zusätzliche Daten bereitstellen
Pfeil 28.3.6 Befehle mit Maus oder Tastatur aufrufen
Pfeil 28.4 Die Anatomie eines »Command«-Objekts
Pfeil 28.4.1 Das Interface »ICommand«
Pfeil 28.4.2 Die Klassen »RoutedCommand« und »RoutedUICommand«
Pfeil 28.4.3 Das Interface »ICommandSource«
Pfeil 28.5 Das MVVM-Pattern
Pfeil 28.5.1 Ein simples Beispielprogramm

28 WPF-CommandsZur nächsten Überschrift

Im Vergleich der WinForm-API mit der WPF fällt ein wesentliches Unterscheidungskriterium sofort ins Auge: Die Oberflächenbeschreibung ist von der hinter den Elementen befindlichen Programmlogik strikt getrennt. Commands treiben diese Trennung sogar auf ein noch höheres Niveau, denn sie ermöglichen das Schreiben von Programmlogik, so dass alle wesentlichen Operationen sogar vollkommen unabhängig von der Oberfläche werden, die konsequenterweise sogar ausgetauscht werden kann. Umgesetzt wird dieses Prinzip mit einem Konzept, das als Model View ViewModel (MVVM) bekannt geworden ist.

Wir wollen auf dieses Pattern in diesem Buch nicht vertiefend eingehen und uns nur am Ende des Kapitels mit einem einführenden Beispiel begnügen. Auch für die Entwickler, die nicht die absolute Trennung zwischen der Oberfläche (View) und dem Programmcode verfolgen, bietet das Command-Konzept genügend Anreize, dessen Fähigkeiten zu nutzen. Das wird der Schwerpunkt dieses Kapitels sein.


Rheinwerk Computing - Zum Seitenanfang

28.1 Allgemeine BeschreibungZur nächsten ÜberschriftZur vorigen Überschrift

Das Konzept der Commands ist im ersten Moment vielleicht etwas komplex. Wir wollen uns daher zuerst einmal einen Überblick über die an diesem Konzept Beteiligten verschaffen:

  • Command: Ein Kommando beschreibt eine bestimmte Aufgabe. Dabei wird verfolgt, ob der Command ausgeführt werden kann oder nicht. Wie Sie noch weiter unten sehen werden, beinhalten die Commands nicht die Logik der Aufgabe.
  • Command-Quelle: Mit der Quelle ist die Komponente gemeint, die einen Command anstößt. Das kann ein Button oder auch beispielsweise ein Menüelement sein. Allen Quellen ist gemeinsam, die Schnittstelle ICommandSource zu implementieren.
  • Command-Ziel: Damit ist das Element gemeint, auf dem das Kommando ausgeführt wird. In den Beispielen weiter oben waren Textboxen das Ziel.
  • Command-Bindung: Eine Bindung sorgt für die Verknüpfung eines Commands mit der Anwendungslogik.

Rheinwerk Computing - Zum Seitenanfang

28.1.1 Ein einführendes BeispielZur vorigen Überschrift

In einem ersten Beispiel möchte ich Ihnen zeigen, wie vordefinierte Commands verwendet werden. Es sei bereits an dieser Stelle angedeutet, dass es nicht immer ganz so einfach ist, wie in diesem Beispiel gezeigt.

Abbildung

Abbildung 28.1 Das Fenster des Beispiels »Sample1«

Das Fenster enthält eine Menü- und eine Symbolleiste, im Arbeitsbereich des Fensters befinden sich zwei Textboxen. Sowohl die Menü- als auch die Symbolleiste ermöglichen, den in einer der beiden Textboxen markierten Text in die Zwischenablage zu kopieren bzw. den Inhalt der Zwischenablage einzufügen.

// Beispiel: ..\Kapitel 28\RoutedCommands\Sample1
<DockPanel>
<Menu DockPanel.Dock="Top">
<MenuItem Header="Bearbeiten">
<MenuItem Command="ApplicationCommands.Copy" />
<MenuItem Command="ApplicationCommands.Paste" />
</MenuItem>
</Menu>
<ToolBarTray DockPanel.Dock="Top">
<ToolBar>
<Button Width="30" Height="30" Command="ApplicationCommands.Copy">
<Image Source="CopyHS.png" />
</Button>
<Button Width="30" Height="30" Command="ApplicationCommands.Paste">
<Image Source="PasteHS.png" />
</Button>
</ToolBar>
</ToolBarTray>
<StackPanel>
<TextBox Name="text1" Margin="10,10,10,5" Height="40"
Background="AntiqueWhite" FontSize="18"></TextBox>
<TextBox Name="text2" Margin="10,5,10,10" Height="40"
Background=" AntiqueWhite" FontSize="18"></TextBox>
</StackPanel>
</DockPanel>

Listing 28.1 Einfacher Einsatz von »Commands«

Solange kein Text in einer der beiden Textboxen markiert ist, ist das entsprechende Menüelement zum Kopieren bzw. die entsprechende Schaltfläche in der Symbolleiste deaktiviert. Das ändert sich, sobald eine Textpassage markiert ist. Nun wird es möglich, über das Menü oder die Symbolleistenschaltfläche den markierten Text in die Zwischenablage zu kopieren. Das ist natürlich völlig unabhängig von der TextBox – es funktioniert mit beiden. Es ist keinerlei Code notwendig, und dennoch arbeitet die Anwendung wie erwartet. Das Programm ist somit voll funktionstüchtig. Beachten Sie außerdem, dass für die Menüelemente und die Symbolleistenschaltflächen keine Beschriftung im XAML-Code angegeben ist. Dass diese Komponenten dennoch korrekt beschriftet werden, ist ebenfalls auf die Commands zurückzuführen. Die Magie wird durch die Bindung der Befehle Copy und Paste an die Symbolleistenschaltflächen und die Menüelemente mit

Command="ApplicationCommands.Copy"

und

Command="ApplicationCommands.Paste"

erreicht. Auch die kürzeren Varianten

Command="Copy"
Command="Paste"

sind erlaubt und werden von der Laufzeit richtig aufgelöst.



Ihre Meinung

Wie hat Ihnen das Openbook gefallen? Wir freuen uns immer über Ihre Rückmeldung. Schreiben Sie uns gerne Ihr Feedback als E-Mail an kommunikation@rheinwerk-verlag.de.

<< zurück
  Zum Rheinwerk-Shop
Zum Rheinwerk-Shop: Visual C# 2012

Visual C# 2012
Jetzt Buch bestellen


 Ihre Meinung?
Wie hat Ihnen das Openbook gefallen?
Ihre Meinung

 Buchempfehlungen
Zum Rheinwerk-Shop: Professionell entwickeln mit Visual C# 2012






 Professionell
 entwickeln mit
 Visual C# 2012


Zum Rheinwerk-Shop: Windows Presentation Foundation






 Windows Presentation
 Foundation


Zum Rheinwerk-Shop: Schrödinger programmiert C++






 Schrödinger
 programmiert C++


Zum Rheinwerk-Shop: C++ Handbuch






 C++ Handbuch


Zum Rheinwerk-Shop: C/C++






 C/C++


 Lieferung
Versandkostenfrei bestellen in Deutschland, Österreich und der Schweiz
InfoInfo





Copyright © Rheinwerk Verlag GmbH 2013
Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das Openbook denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt.
Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.


Nutzungsbestimmungen | Datenschutz | Impressum

Rheinwerk Verlag GmbH, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, service@rheinwerk-verlag.de

Cookie-Einstellungen ändern