BindingErrorListener In WPF

1969 ワード

WPFでバインディングエラーが発生し、デバッグ時にOutPut(出力)ウィンドウでバインディングエラー情報が表示されるのが一般的です.
そこで私は以下にこれらのエラー情報を表示します.
BindingErrorListenerクラス
public class BindingErrorListener:TraceListener

   {

       private Action<string> _logAction;



       public static void Listen(Action<string> logAction)

       {

           PresentationTraceSources.DataBindingSource.Listeners.Add(

               new BindingErrorListener() { _logAction = logAction });

       }

       public override void Write(string message)

       {

       }



       public override void WriteLine(string message)

       {

           _logAction(message);

       }

    }

.csharpcode, .csharpcode pre
{
font-size: small;
color: black;
font-family: consolas, "Courier New", courier, monospace;
background-color: #ffffff;
/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt
{
background-color: #f4f4f4;
width: 100%;
margin: 0em;
}
.csharpcode .lnum { color: #606060; }
そしてViewModelかapp.xaml.csで呼び出せばいい
  BindingErrorListener.Listen(a => MessageBox.Show(a));
これで弾枠の形で表示されます.