Mercurial > silverbladetech
view Messaging/Common/Xaml/BindingErrorTraceListener.cs @ 31:7d9de5746f18
Working version
author | adminsh@apollo |
---|---|
date | Thu, 22 Mar 2012 08:09:41 +0000 |
parents | 96fdf58e05b4 |
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 Common.Xaml { 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; } } }