head.WriteLine()

Donnerstag, Mai 20, 2010

TT.DOM in der aktuellen dotnetpro, Teil 3

In der aktuellen Ausgabe der dotnetpro (6/2010) ist der dritte Teil meiner vierteiligen Artikelserie über die Entwicklung von Datenklassen erschienen. Hierin beschreibe ich das View-Modell von TT.DOM.
Aus dem Abstract:
Benutzer schätzen es, Darstellungen von Daten individuell anpassen zu können – sortieren oder filtern, Spalten ausblenden oder berechnete Spalten anzeigen. All dies erlaubt normalerweise die DataView-Klasse. Bei eigenen Objekten müssen Sie sich selbst um solche Anforderungen selbst kümmern. Das Thinktecture.DataObjectModel hilft auch hierbei.
dnp_062010[1]

Labels:

Slides von der BASTA! ON TOUR

Hier die Slides meiner Sessions von der BASTA ON TOUR:

Vielen Dank an die Teilnehmer! Das hat Spaß gemacht!

Mittwoch, Mai 12, 2010

Externe Change Callbacks für Dependency Properties

Neulich kam in einem Training die Frage auf, wie man einen Change Callback an eine Dependency Property hängen kann. Im konkreten Fall ging es darum auf Eingabeänderungen in einer ComboBox zu reagieren. Da diese jedoch kein passendes Event hierfür vorsieht, muss manuell nachgeholfen werden.
Zwar bieten Dependecy Properties grundsätzlich die Möglichkeit über die Metadaten einen Change Callback einzuhängen, jedoch nur von der Klasse, welche die Property registriert.
Über die Klasse DependencyPropertyDescriptor kann man jedoch auch einen externen Handler einklinken und sich auf diese Weise - auch ohne Event - über Änderungen informieren lassen.
Das ganze funktioniert wie folgt:

DependencyPropertyDescriptor desc =
  DependencyPropertyDescriptor.FromProperty(
    ComboBox.TextProperty, typeof(ComboBox));
if (desc != null)
{
    desc.AddValueChanged(cbx, (s, e) => ... );
}

Aber wie immer gilt: Abmelden nicht vergessen (RemoveValueChanged), damit der Gargabe Collector später aufräumen kann ;)