Mercurial > silverbladetech
comparison MetroWpf/MetroWpf.Xaml/Binding/BindingErrorTraceListener.cs @ 15:060f02cd4591
Initial commit, pre airport work
author | stevenh7776 stevenhollidge@hotmail.com |
---|---|
date | Mon, 12 Mar 2012 23:05:21 +0800 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
14:741981715d94 | 15:060f02cd4591 |
---|---|
1 // http://www.switchonthecode.com/tutorials/wpf-snippet-detecting-binding-errors | |
2 | |
3 using System.Diagnostics; | |
4 using System.Text; | |
5 using System.Windows; | |
6 | |
7 namespace MetroWpf.Xaml.Binding | |
8 { | |
9 public class BindingErrorTraceListener : DefaultTraceListener | |
10 { | |
11 private static BindingErrorTraceListener _listener; | |
12 | |
13 | |
14 private readonly StringBuilder _message = new StringBuilder(); | |
15 | |
16 private BindingErrorTraceListener() | |
17 { | |
18 } | |
19 | |
20 public override void Write(string message) | |
21 { | |
22 _message.Append(message); | |
23 } | |
24 | |
25 public override void WriteLine(string message) | |
26 { | |
27 _message.Append(message); | |
28 | |
29 var final = _message.ToString(); | |
30 _message.Length = 0; | |
31 | |
32 MessageBox.Show(final, | |
33 "Binding Error", | |
34 MessageBoxButton.OK, | |
35 MessageBoxImage.Error); | |
36 } | |
37 | |
38 public static void CloseTrace() | |
39 { | |
40 if (_listener == null) | |
41 { | |
42 return; | |
43 } | |
44 | |
45 _listener.Flush(); | |
46 _listener.Close(); | |
47 PresentationTraceSources.DataBindingSource.Listeners.Remove(_listener); | |
48 _listener = null; | |
49 } | |
50 | |
51 [Conditional("DEBUG")] | |
52 public static void SetTrace() | |
53 { | |
54 SetTrace(SourceLevels.Error, TraceOptions.None); | |
55 } | |
56 | |
57 public static void SetTrace(SourceLevels level, TraceOptions options) | |
58 { | |
59 if (_listener == null) | |
60 { | |
61 _listener = new BindingErrorTraceListener(); | |
62 PresentationTraceSources.DataBindingSource.Listeners.Add(_listener); | |
63 } | |
64 | |
65 _listener.TraceOutputOptions = options; | |
66 PresentationTraceSources.DataBindingSource.Switch.Level = level; | |
67 } | |
68 } | |
69 } |