Kolumne XAML Expertise: WPF und Windows-Apps

XAML-Tipp: WPF – Data-Binding-Fehler ohne Visual Studio ermitteln
Kommentare

In der Kolumne „XAML Expertise“ präsentiert Gregor Biswanger Top-How-tos zum Thema XAML. Einsteiger und fortgeschrittene XAML-Experten sollen hier durch geballtes Wissen gesättigt werden. Heute gibt es folgende Expertise: „WPF: Data-Binding-Fehler ohne Visual Studio ermitteln“.

Das vorangegangene How-to beschreibt, wie man eigene Trace-Informationen schreibt und mit dem DebugView-Tool ohne Visual Studio anzeigen lässt. Ein wichtiger Aspekt ist ebenfalls, wie man an die Trace-Informationen von XAML gelangt. Dazu zählt beispielsweise die Verarbeitung des Data Bindings. Das hilft beim Aufspüren von Fehlern, die oft erst sporadisch zur Laufzeit auftreten.

Die PresentationTraceSources-Klasse ermöglicht ein kontrolliertes Aktivieren der XAML-Trace-Informationen. Diese legt man am besten zum Programmstart in der App.xaml.cs-Datei fest. In Listing 1 wird gezeigt, wie sie explizit aktiviert werden. Zum Schreiben der Tracing-Informationen wurde zusätzlich ein Trace Listener geschrieben und hinterlegt. Damit die PresentationTraceSources auch ohne Debugging-Modus funktionieren, wurde die Refresh-Methode vorher ausgeführt.

Wichtig: Am besten hinterlegt man zusätzlich in der App.config einen Konfigurationseintrag, ob die PresentationTraceSources gerade aktiv sein sollen. Die Einstellung sollte dann per Standard deaktiviert sein. Ansonsten kann es zu großen Performanceproblemen kommen, wenn die PresentationTraceSources unnötig im Hintergrund mitlaufen.

Ein Beispiel mit fehlerhaftem Data Binding wurde ohne Debug-Modus ausgeführt. Abbildung 1 zeigt, wie die Data-Binding-Trace-Informationen beim DebugView-Tool angezeigt werden.

public partial class App : Application
{
  protected override void OnStartup(StartupEventArgs e)
  {
    base.OnStartup(e);

    PresentationTraceSources.Refresh();
    PresentationTraceSources.DataBindingSource.Switch.Level = SourceLevels.All;
    PresentationTraceSources.DataBindingSource.Listeners.Add(new XamlTraceListener());
  }
}

public class XamlTraceListener : TraceListener
{
  public override void Write(string message)
  {
    Trace.Write(message);
  }

  public override void WriteLine(string message)
  {
    Trace.WriteLine(message);
  }
}

 

Abb. 1: Debugging-Probleme in DebugView anzeigen lassen

Abb. 1: Debugging-Probleme in DebugView anzeigen lassen

Windows Developer

Windows DeveloperDieser Artikel ist im Windows Developer erschienen. Windows Developer informiert umfassend und herstellerneutral über neue Trends und Möglichkeiten der Software- und Systementwicklung rund um Microsoft-Technologien.

Natürlich können Sie den Windows Developer über den entwickler.kiosk auch digital im Browser oder auf Ihren Android- und iOS-Devices lesen. In unserem Shop ist der Windows Developer ferner im Abonnement oder als Einzelheft erhältlich.

Unsere Redaktion empfiehlt:

Relevante Beiträge

Meinungen zu diesem Beitrag

X
- Gib Deinen Standort ein -
- or -