Binding Checkbox an eine Visible Eigenschaft eines Elements

Ab .NET Framework 4.5 bietet Microsoft den  BooleanToVisibilityConverter an mit dessen Hilfe man unter WPF man es umsetzen kann, dass eine Checkbox ein Element Visible oder Hidden setzt.
[crayon-6606191650997996998492/]
Quelle: http://stackoverflow.com/questions/6990982/wpf-control-tabitem-visibility-from-a-checkbox




TSQL Mod – Eine DLL für schnelle SQL Server arbeiten

TSQLmod Download

Klasse db (Connection String)

benötigt in erster Linie die SQL Instanz. Nachdem das Objekt erfolgreich initialisiert wurde, wird auch gleichzeitig die Verbindung aufgemacht und die folgenden Methoden können genutzt werden.

LookUP(…)

gibt aus einem SQL Query den ersten Treffer der angegebenen Spalte als String wieder. Ideal um einen Wert aus der Datenbank auszulesen. Möglich ist es entweder die Spaltennummer oder den Spaltennamen anzugeben.

getRowList(…)

gibt eine List<string> oder generische List<T> von der angegebenen Spalte zurück. Man erhält quasi aus dem Select eine gewünschte Spalte

getRowStringBuilder(…)

ähnlich wie die getRowList(…) ist der Rückgabewert aber ein Stringbuilder, in welchen alle Zeilen einer selektierten Spalte enthalten sind.

getDynamicList(…)

erfordert eine Klasse welche dieselben Datentypen und Bezeichnung hat wie das SQL Select. Als Rückgabe erhält man man eine List<meineKlasse>, welche 1:1 so viele Elemente und Spalten hat wie das Sql Query. Das ganze arbeitet nicht mit Reflektionen, sondern nach dem Prinzip von diesem genialen Autor: KLICK

Dazu jeweils ein Beispiel. Ausgehend vom folgenden Select:

sqlManager

 

einem erstellten Objekt der Klasse db:
[crayon-6606191651319498272748/]
und ein string mit folgendem select:
[crayon-6606191651321519715923/]

LookUp(…)

[crayon-6606191651323534581473/]
 

 

Antwort: lookUp

 

getRowList(…)

[crayon-6606191651325334430646/]

Antwort: getRowList
getRowStringBuilder(…)

[crayon-6606191651326859492727/]
Antwort: getRowStringBuilder

 

getDynamicList(…)

Wie oben bereits erwähnt, ist hierfür eine Klasse mit Propertys notwendig. Diese kann man ganz einfach auch mit den Methoden aus  CreateClass – Klasse erstellen. Dazu weiter unten.
[crayon-6606191651328778443026/]
dann kann man so eine dynamische Liste ganz einfach erstellen:
[crayon-6606191651329920226124/]
 

diese Liste kann man nun z.B. einem Datagrid aus WPF zuordnen:
[crayon-660619165132a864731970/]
[crayon-660619165132c959547420/]
Das ganze sieht dann so aus:

dynList_01

wem das Datumsformat stört, der kann dem Ereignis AutogeneratingColumn aus dem Datagrid eine Änderung des Datumsformates durchführen:

dynList_Property

 

folgendes soll nun passieren, wenn das Ereignis eintrifft:
[crayon-660619165132d124844200/]
Nun sieht das ganze so aus:

dynList_02




Button Color aus Hexwert ändern

[crayon-66061916516b1151846804/]
um Button zurück zu setzen:
[crayon-66061916516b6799057741/]
 

guter einfacher ColorPicker:

http://www.colorpicker.com/




Aus einer anderen Klasse, aus einem anderen Thread in MainWindow schreiben

Möchte man aus einer anderen Klasse, aus einem anderen Thread etwas in die Mainklasse Steuerelemente schreiben, stößt man auf 2 Probleme:

1. Man kann aus Thread 2 nicht in Thread 1 schreiben

2. Man kann nicht, ohne ein Objekt angelegt zu haben nicht in die Steuerelemente schreiben.

Abhilfe schafft ein kleiner Trick.

MainWindow.cs:
[crayon-6606191651978846522735/]
[crayon-660619165197c575935198/]
 

meineAndereKlasse.cs:
[crayon-660619165197e469740280/]
Kleine Erweiterung, selbes Prinzip um ein Imagecontrol zu ändern:

MainWindow.cs: 
[crayon-6606191651980085844262/]
meineAndereKlasse.cs:
[crayon-6606191651983132116033/]
 

Quelle: Stackoverflow




Schnell mal ein Bild einfügen

Dazu einfach ein Bild in den Designer ziehen.

Möchte man im Code-Behind, dann das Bild ersetzen, gibt man der Image-Control einen Namen und führt folgendes aus:
[crayon-6606191651c07473551214/]
 




Aktuelles Datum binden

 

als namespace hinzufügen:
[crayon-6606191651dec743560227/]
Den DateTimePicker erstellen:
[crayon-6606191651df0778941125/]




Binding Elementbinding

Möchte man eine Elementeigenschaft an die andere binden, muss man in die Quelleigenschaft gehen und ein {Binding … } einsetzen.

Zuerst wird das Objekt, dann dessen Eigenschaft abgefragt.

ElementName (welches Element?)

Path(welche Eigenschaft?)

Bei Path könnte auch etwas anderes stehen. SelectedIndex z.B.

oder Items[0] für das erste Item in der ListBox
[crayon-660619165205e836706879/]
Das Visual Studio bietet mit dem Intellisense eine große Hilfe bei der Selektion.

 




Binding Allgemein

Unter Binding versteht man, eine Eigenschaft von dem Quellobjekt an eine Eigenschaft des Zielobjekts bindet.

Dabei gibt es 2 Arten:

Element an ein anderes Element / Element an Datenquelle z.B. Datenbank

binding_element  binding_db

Dabei bindet man eine Abängigkeits-Eigenschaft (Dependency Property) an die andere. Diese müssen gleichen Typs sein. Sind diese Anforderungen erfüllt, kann man alles binden. Breite eines Steuerelements an die Fensterbreite, selektiertes Element einer Combobox an ein Label und sogar ganze Spalte aus einer Datenbank.

Das Visual Studio bietet hierfür eine Hilfe in den Eigenschaften der Steuerelemente an.

2015-02-26_21-42-48  2015-02-26_21-45-44

 

 

2015-02-26_21-47-14

 

Hier sehen wir nun, 7 Bindungstypen, die uns zur Verfügung stehen. Jedes dieser Bindungen umfasst eine Ansammlung von Eigenschaften aus seinem Gebiet.

 

  1. Datenkontext: Jede WPF Anwendung hat zu Beginn 2 Schichten. Eine für UI (User Interface) und die andere für Daten. Die Datenschicht ist zu Beginn Null, das heißt ohne Inhalt. Indem wir deren Eigenschaft DataContext setzen umfasst dieser Kontext nun alle angegebenen Daten. Solange man nichts weiter angibt, erben nun die Kindobjekte (Steuerelemente wie Label, Textbox usw.) von dem Elternobjekten diese Daten.
  2. Datenquelle:
  3. ElementName: Umfasst alle visuelle und nicht visuelle Elemente aus dem XAML Projekt. Hier stehen einem sämtliche Eigenschaften der Steuerelemente wie Textbox, Label, Combobox und auch nicht die Eigenschaften vom Window zur Verfügung.
  4. RelativeSource FindAncestor: Hier werden sämtliche Eigenschaften von allen hierarchisch überliegenden Objekten zur Verfügung gestellt.
  5. RelativeSource PreviusData:   Gegenteil vom FindAncestor, werden hier alle unterliegenden Objekteigenschaften aufgelistet
  6. RelativeSource Self: Hier bekommt man Eigenschaften vom selben Objekt zur Verfügung gestellt
  7. RelativeSource TemplatedParent: 
  8. StaticResource: Bezeichnet eine schon zuvor in die Resources eingeschriebene Datenquelle