Suchergebnisse

Suchergebnisse 1-30 von insgesamt 54.

  • Benutzer-Avatarbild

    WPF verständlich und anhand von Praxisbeispielen erklärt Autor: Sascha Patschka Inhaltsverzeichnis (inkrementell) ___1. Vorstellung _____1.1 Einleitung _____1.2 Aufbau der Tutorialreihe ___2. Grundlagen der WPF _____2.1 Einführung in die WPF ________2.1.1 Die wichtigsten Controls und deren Verwendung ______________2.1.1.1 Videocast: Die wichtigsten Controls und ihr Verhalten ______________2.1.1.2 Videocast: Style, Templates und Trigger ______________2.1.1.3 Videocast: Controls eine neue Optik ve…

  • Benutzer-Avatarbild

    1.0 Vorstellung Mein Name ist Patschka Sascha-Heinz, ich bin 1983 geboren und arbeite als EDV Techniker. Beruflich habe ich fast nichts mit der Programmierung zu tun und komme sohin nur privat dazu mich sowohl weiterzubilden als auch mehr Übung zu bekommen. Da ich fast von Anfang an unter WPF programmiere und unter WinForms wirklich nur ca. 2-3 Monate gearbeitet habe gab es für mich von Anfang an nur die Richtung zur WPF. Die WPF ist ein sehr leistungsstarkes Framework welches einem nicht nur in…

  • Benutzer-Avatarbild

    1.1 Einleitung Ich werde absichtlich so wenig wie nur möglich mit Fremdwörtern oder kompliziertem Code um mich werfen. Es soll in dieser Tutorialreihe darum gehen den Code zu verstehen. Auch Anfänger sollten den Code lesen und nachbauen können. Evtl. wird auch Code auskommentiert werden und darunter eine andere Möglichkeit geboten wie z.B. eine Schleife gegen eine Lambda Expression vereinfacht werden kann, einfach damit auch Personen welche noch nicht mit Lambda gearbeitet haben verstehen was hi…

  • Benutzer-Avatarbild

    2.0 Grundlagen der WPF Wir kommen zu den Grundlagen. Die WPF bietet eine eigene "Deisgnersprache". XAML (Extensible Application Markup Language); ist eine Markupsprache und ist ähnlich im Aufbau wie XML. Der Großteil der Benutzeroberfläche wird in der WPF mit XAML erstellt. Was ist XAML? Im Grunde vereinfacht XAML das Erstellen einer UI einer .NET Anwendung. Es können sichtbare UI-Elemente im deklarativen XAML-Markup erstellt und anschließend die UI-definition mithilfe von Code-Behind, die über …

  • Benutzer-Avatarbild

    2.1 Einführung in die WPF In diesem Kapitel werden wir ein paar Beispiele durchgehen. Das Hauptaugenmerk wird hier auf XAML gelegt. Wir werden die wichtigsten Controls kennenlernen, wie wir diese Anwenden und auch untereinander kombinieren können um somit ein völlig neues Aussehen und zum Teil neues Verhalten über Trigger und Animations in das Control bekommen. Außerdem werden wir lernen wie wir ein Fenster so gestallten das dieses völlig dynamisch auf Größenänderungen reagiert. Dabei werden die…

  • Benutzer-Avatarbild

    2.1.1.2 Styles, Templates und Trigger. Heute: Styles Wir lernen Styles kennen und sehen uns an was es damit auf sich hat. Oft soll die Darstellung von Elementen desselben Typs innerhalb einer UI identisch sein. Wie im Web das CSS gibt es in der WPF hierfür Styles. Die Wiederverwendung von Stilen (Styles) erleichtert das Entwickeln und die Wartung eines UI. Hier ein Beispiel für einen Style: XML-Quellcode (7 Zeilen) Styles können in XAML mit einem Key versehen oder über den Typ definiert werden. …

  • Benutzer-Avatarbild

    2.1.1.2 Styles, Templates und Trigger. Heute: Templates Bei Template müssen wir zunächst mal zwischen ControlTemplates, DataTemplates, ItemsPanelTemplates und HirachicalDataTemplates unterscheiden. Es ist erstmal wichtig zu wissen welche Art von Template man gerade benötigt um die aktuelle Aufgabenstellung meistern zu können. Nur wenn man weiß was für ein Template man gerade benötigt wird man über die Suchmaschine seiner Wahl auch korrekte Ergebnisse bekommen und erspart sich erstmal die Suche n…

  • Benutzer-Avatarbild

    2.1.1.2 Styles, Templates und Trigger. Heute: Trigger Auch bei Triggern müssen wir wieder unterscheiden da es hier mehrere Arten von Triggern gibt. Folgende Trigger gibt es: - Trigger - DataTrigger - Multitrigger - MultiDataTrigger - EventTrigger Trigger werden überwiegend in Styles oder ControlTemplates verwendet. Er Triggert ein Property auf ein anderes Property dieses Controls. Beispiel: Ein Trigger soll die Hintergrundfarbe des Buttons auf ROT setzen wenn das Property IsMouseOver True ist. X…

  • Benutzer-Avatarbild

    2.1.1.3 Controls eine neue Optik verpassen, inkl. deren Verhalten In den vorigen drei Kaptiteln haben wir erfahren wie wir mittels Styles, Triggern und Templates Controls anpassen. In jedem dieser Kapitel haben wir mehr oder weniger entweder das Aussehen oder das Verhalten eines Controls beeinflussen können. Nun ist es an der Reihe das erlernte wissen umzusetzen und ein Control komplett zu überarbeiten. Ich habe mir die Checkbox ausgesucht, einfach weil dies ein Control ist welchen von Haus aus …

  • Benutzer-Avatarbild

    2.1.2 XAML Namespaces In diesem Thema widmen wir uns den XAML-Namespaces. Wir klären was es mit den Namespaces auf sich hat und wie wir diese Verwenden und eigene Namespaces definieren. Was ist ein XAML-Namespace? Wie in XML-Namespaces ist ein XAML-Namespace eine Erweiterung dieses Konzepts. Eine etwas technische Beschreibung des Begriffs gibt es auf MSDN unter folgenden Link: msdn.microsoft.com/de-de/library/ms747086(v=vs.110).aspx Ich möchte es allerdings etwas verständlicher beschreiben. Im G…

  • Benutzer-Avatarbild

    2.1.2 Resourcen Was sind Resourcen und was bringen sie mir Grundsätzlich gibt es in einer Anwendung zwei Arten von Resourcen. Die XAML Resourcen und die Anwendungsresourcen. Eine Resource ist ein Objekt welches an unterschiedlichen Stellen einer Anwendung erneut verwendet werden kann. Die Anwendungsresourcen kennt Ihr sicher aus WinForms auch, dies sind nicht ausführbare Datendateien die eine Anwendung zur Laufzeit benötigt wie z.b. ein Icon oder Bild. Ein Beispiel für XAML Resourcen sind Brushe…

  • Benutzer-Avatarbild

    2.1.4.1 DataBinding Was ist Binding - Das Konzept dahinter Durch das Binden wird eine Verbindung zwischen der UI und der Geschäftslogik hergestellt. Durch ein Benachrichtigungssystem werden Daten zwischen einer Logik (z.b. einer Klasse) und dem UI (z.b. eine TextBox) hin und her synchronisiert. Beispielsweise ist das Text-Property einer TextBox auf ein String-Property einer Klasse gebunden. Tippt der Benutzer einen Text in die TextBox wird der eingegebene Text automatisch in das Property der Kla…

  • Benutzer-Avatarbild

    2.1.4.2 Binding anhand einfacher Beispiele Hallo Leute, wie schon erwähnt erkläre ich euch Binding anhand eines Videos da man hier viel besser rüberbringen kann um was es geht und mit Praxisbeispielen arbeiten kann. Wir werden an Eigenschaften anderer Steuerelemente Binden und dann an eine eigene Klasse. Zuerst Binden wir Steuerelemente in einem Window an die eigene Code Behind bevor wir an eine selbst geschriebene Klasse binden, und auch hierfür gibt es wieder mehrere Möglichkeiten. Zum Schluss…

  • Benutzer-Avatarbild

    2.1.4.3 Designtime-Support für Binding Binding ist in der WPF das wohl wichtigste Feature und sollte wirklich aus dem FF beherrscht werden da man sich sonst ständig wegen irgendeinem kleinen Problemchen ärgern muss. Beim Binding ist zudem noch darauf zu achten das hier auf die Groß-Kleinschreibung Rücksicht genommen wird, Binding ist also Case Sensitive. Heute sind wir es mittlerweile gewohnt von einer Entwicklungsumgebung wie VisualStudio nicht nur Feedback darüber zu bekommen das wir uns gerad…

  • Benutzer-Avatarbild

    Nachtrag zum vorigen Beitrag: Wie versprochen hier das Video zum vorigen Beitrag inkl. dem PDF zum Downloaden und der Solution. Ich musste diesen Beitrag leider Teilen da nur 15 Anhänge erlaubt sind. youtube.com/watch?v=PmTCEpHSGGY Schöne Grüße und viel spaß mit dem Video. Gerne könnt ihr mir ein Like und/oder ein Kommentar hinterlassen und wieder den SupportThread verwenden um Fragen zu stellen. Bis zum nächsten Kapitel Grüße Sascha

  • Benutzer-Avatarbild

    2.1.4.4 Binding über Converter Es wird vorkommen das man Daten an die View Binden möchte welche so nicht zu Binden sind. Beispielsweise haben Sie eine Eigenschaft in Ihrer zugrundeliegenden Klasse vom Typ Boolean vorliegen, möchten allerdings das im View abhängig von deren Wert ein Element ein oder ausgeblendet wird. Das ist so ohne weiteres nicht möglich. In der WPF ist das zuständige Property welches diesen Zustand ändert das Property Visible welches vom Typ Visibility ist. Der Typ Visibilty i…

  • Benutzer-Avatarbild

    2.1.4.5 Binding über DataTemplates Wie der Titel dieses Kapitels vermuten lässt geht es um DataTemplates. Wieder! Ja, dem aufmerksamen leser wird auffallen das es bereits in Kapitel 2.1.1.2 - Styles,Templates und Trigger um Templates ging und das wir hier bereits einiges gelernt haben was diese Vorlagen (Templates auf Deutsch = Vorlagen) betrifft. Da ich allerdings der Meinung bin das DataTemplates eine besondere Aufmerksamkeit geschänkt werden sollte greife ich dieses Thema nun nochmals auf um …

  • Benutzer-Avatarbild

    2.1.4.6 Binding an Collections mit CollectionViewSource Wie Ihr in den vorigen Kapitel bereits gesehen habt kann man direkt an eine Collection binden, dabei ist es im Grunde völlig gleich ob diese eine List(Of T) , eine ObservableCollection(Of T) oder gar nur ein Array ist. Was hier aber irgendwie fehlt sind Funktionen wie Filtern, Sortieren oder auch Gruppieren. Aber auch die Informationen welches Item einer Auflistung nun gerade Beispielsweise in einer ListBox selektiert ist fehlt uns. Letzter…

  • Benutzer-Avatarbild

    2.1.4.6 Teil 2 Binding an Collections mit CollectionViewSource Also kommen wir zur zweiten Methode welche ich oben bereits angesprochen hatte. Die Erstellung und Manipulation einer CollectionViewSource per Code. Hier werde ich auch auf ein paar Funktionen der CollectionViewSource auf welche ich bisher nicht eingegangen bin zu sprechen kommen, ihre Verwendung ist allerdings die gleiche für beide Arten der Erstellung. Hierfür erstelle ich abermals ein neues Projekt und füge dort meine Person Klass…

  • Benutzer-Avatarbild

    2.1.4.7 Validieren von Benutzereingaben Eine oft unterschätzte aber meiner Meinung nach sehr wichtige Aufgabe eines Programms ist die Validierung von Benutzereingaben auf ihre Richtigkeit. Hat der Benutzer einen gültigen Wert angegeben? Ich sehe es immer wieder Programme welche Benutzereingaben schlichtweg nicht prüfen bzw. nur beim Speichern prüfen. Soll bedeuten, der Benutzer kann eingeben was er möchte und beim Speichern erhält dieser eine Meldung das die Eingaben nicht korrekt wären. Oft sog…

  • Benutzer-Avatarbild

    2.1.4.8 Auf die aktuelle Culture eingehen Die WPF biete diverse sinnvolle Mechanismen um z.b. den Text in einer TextBox so darzustellen wie dies der aktuelle Anwendungsfall erfordert. Das StringFormat beim Binding ist hier ein sehr gutes Beispiel welches wir bereits unter anderem in Kapitel 2.1.4.7 verwendet hatten. Aber wie sieht es eigentlich aus mit der Kultur? Kann ich das selbst steuern? Was ist der Default wert bei einer WPF Anwendung? Wie kann ich steuern ob wie ein Datum angezeigt wird o…

  • Benutzer-Avatarbild

    2.1.5 Dependency Properties Jeder der mit der WPF Arbeitet hört früher oder später von Dependency Properties. Sie sind Voraussetzung für Styles, Trigger oder Animationen. Jeder verwendet Dependency Properties da jedes Control diverse Eigenschaften besitzt welche als Dependency Properties implementiert sind. Bei den BuildIn Controls sind dies fast alle Properties. 2.1.5.1 Was sind Dependency Properties und wie unterscheiden sie sich von normalen Properties Generell wird bei Dependency Properties …

  • Benutzer-Avatarbild

    2.1.5.2 Wir erstellen und Rendern eine "TextEllipse" mittels DependencyProperties Um die Funktionsweise und das Zusammenspiel von Dependency Properties in der Praxis kennenzulernen möchte ich ein Simples Beispiel erstellen welches eine Ellipse rendern soll in welcher sich in der Mitte ein Text befindet. Dies könnte z.b. so aussehen: vb-paradise.de/index.php/Attac…af3154943dce4df05925078db Um auch Binding und die Manipulation von Dependency Properties kennenzulernen soll man im XAML für diese Ell…

  • Benutzer-Avatarbild

    2.1.5.3 Eigene DependencyProperties in einem UserControl implementieren In diesem Kapitel kommen wir dazu dass wir ein Dependency Property in ein UserControl implementieren. Dies ist ein Scenario welches in der Praxis schon um einiges öfter vorkommt. In diesem Beispiel gehen wir davon aus das wir ein UserControl haben welches uns Personendaten darstellen soll. Das Control soll aber so flexibel wie möglich sein um es möglichst wiederverwenden zu können. Weiters sollen wir die Möglichkeit erhalten…

  • Benutzer-Avatarbild

    2.1.6 Markuperweiterungen (Markup Extensions) Markup Extensions nutzen wir jeden Tag in der WPF. Bekannte Markup Extensions sind Beispielsweise {StaticResource}, {TemplateBinding} oder {Binding}. Wir verwenden diese ständig und sind ein fester Bestandteil der WPF, aber wie sieht es aus mit eigenen Extensions? Können wir eigene Extensions schreiben und was für einen Mehrwert bringen uns diese Extensions? Dies will ich in diesem Kapitel erläutern. 2.1.6.1 Markuperweiterungen - Theorie Ich habe ja …

  • Benutzer-Avatarbild

    2.1.6.2 Markuperweiterungen - Beispiel Als ersten möchten wir anhand eines einfachen Beispiels einfach nur ein „Hallo Welt“ zurückgeben, nur damit wir sehen wie die Implementierung einer Markup Extension von statten geht und was dabei evtl. zu beachten ist. Unsere Markup Extension soll den Namen HelloWorld bekommen. Die Namenskonvention erwartet von uns dass die Klasse somit den Namen „HelloWorldExtension“ bekommt. Diese Namenskonvention ist keine Pflicht, wird aber empfohlen. Wir legen also ein…

  • Benutzer-Avatarbild

    2.1.7 Attached Properties Jetzt wo wir über Dependency Properties Bescheid wissen kommen wir zu den Attached Properties. Diese sind eine andere Art von Dependency Properties. Wir benutzen Attached Properties im Grunde täglich während der Arbeit unter WPF. Viele Panels haben Attached Properties wie z.b. das DockPanel. Auch das Grid besitzt Attached Properties. Haben wir ein Grid in welchen sich Steuerelemente befinden können wir bestimmen wo diese Steuerelemente befinden sollen (Spalte oder Zeile…

  • Benutzer-Avatarbild

    2.1.7.2 Eigene Attached Properties Kommen wir zur Praxis So würde ein Attached Property aussehen: VB.NET-Quellcode (26 Zeilen) Über die Signatur der Methoden Get und Set kann bestimmt werden für welche Controls ein Attached Property gültig sein soll. In diesem Fall wird bei beiden Methoden ein Element vom Typ Dependency Object erwartet, was bedeutet das dieses Attached Property auf jedes Objekt welches vom Typ DependencyObject ableitet angewandt werden kann. Dieses Argument kann auch angepasst w…

  • Benutzer-Avatarbild

    2.1.8.1 Die Input API Die Primäre API für die Eingabe ist in den Basiselementen UIElement, ContentElement, FrameworkElement und FrameworkContentElement enthalten. Einige davon haben wir ja bereits ausführlicher kennengelernt. Alle diese Klassen bieten Funktionen für Eingabeereignisse die im Zusammenhang mit Tastatureingaben, Maustasten, dem Mausrad, sowie der Mausbewegung stehen. Dieses System unterscheidet sich von dem System wie es in WinForms implementiert ist und ermöglicht eine andere Einga…

  • Benutzer-Avatarbild

    2.1.8.2 Tastatur und Mausklassen Zusätzlich zur Input API in den Basiselement-Klassen stellen die Keyboard-Klasse und die Mouse-Klasse weitere APIs für die Arbeit mit der Tastatur und Maus zur Verfügung. Tastatur VB.NET-Quellcode (3 Zeilen) Maus Dasselbe gilt für die Mouse-Klasse. Im folgenden Beispiel wird ermittelt ob die linke Maustaste gedrückt wurde. VB.NET-Quellcode (3 Zeilen) Stifteingabe Die WPF verfügt über integrierte Unterstützung für Stylus-Eingaben. Stylus sind Stifte zur Eingabe an…