Mercurial > silverbladetech
view MetroWpf/MetroWpf.Xaml/Binding/BindingErrorTraceListener.cs @ 76:441fdfce70a7
Working version!
author | Steven Hollidge <stevenhollidge@hotmail.com> |
---|---|
date | Mon, 23 Apr 2012 22:05:53 +0100 |
parents | 060f02cd4591 |
children |
line wrap: on
line source
// http://www.switchonthecode.com/tutorials/wpf-snippet-detecting-binding-errors using System.Diagnostics; using System.Text; using System.Windows; namespace MetroWpf.Xaml.Binding { public class BindingErrorTraceListener : DefaultTraceListener { private static BindingErrorTraceListener _listener; private readonly StringBuilder _message = new StringBuilder(); private BindingErrorTraceListener() { } public override void Write(string message) { _message.Append(message); } public override void WriteLine(string message) { _message.Append(message); var final = _message.ToString(); _message.Length = 0; MessageBox.Show(final, "Binding Error", MessageBoxButton.OK, MessageBoxImage.Error); } public static void CloseTrace() { if (_listener == null) { return; } _listener.Flush(); _listener.Close(); PresentationTraceSources.DataBindingSource.Listeners.Remove(_listener); _listener = null; } [Conditional("DEBUG")] public static void SetTrace() { SetTrace(SourceLevels.Error, TraceOptions.None); } public static void SetTrace(SourceLevels level, TraceOptions options) { if (_listener == null) { _listener = new BindingErrorTraceListener(); PresentationTraceSources.DataBindingSource.Listeners.Add(_listener); } _listener.TraceOutputOptions = options; PresentationTraceSources.DataBindingSource.Switch.Level = level; } } }