Mercurial > silverbladetech
view MetroWpf/MetroWpf.Xaml/Binding/BindingErrorTraceListener.cs @ 121:8f94475d3146 tip
final code
author | stevenh7776 |
---|---|
date | Thu, 31 May 2012 15:35:26 +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; } } }