Исключение в случае ошибки выражения - PullRequest
6 голосов
/ 03 января 2011

Если во время отладки произошла ошибка выражения привязки, она регистрируется в окне «Вывод» в Visual Studio.Это выглядит примерно так:

System.Windows.Data Error: BindingExpression path error: 'User' property not found
on 'MainPageVM' 'MainPageVM' (HashCode=38694667). BindingExpression: Path='User.FullName'
DataItem='MainPageVM' (HashCode=38694667); target element is 'System.Windows.Controls.TextBlock'
Name=''); target property is 'Text' (type 'System.String')..

Можно ли вместо этого обработать эту ошибку как необработанное исключение?Я не хочу, чтобы мое приложение Silverlight продолжало работать, если произошла ошибка привязки.

1 Ответ

2 голосов
/ 05 апреля 2011

Вы можете перехватить ошибки трассировки.
(Слушатель должен быть во внешней dll.)

namespace CustomTracer
{
    public class CustomTraceListener : TraceListener
    {
        public CustomTraceListener()
        {
        }

        public override void Write(string message)
        {
        }

        public override void WriteLine(string message)
        {
            if(Debugger.IsAttached)
                Debugger.Break();
        }
    }
}

Добавить это в app.config

<system.diagnostics>
    <sources>
      <source name="System.Windows.Data" switchName="OnlyErrors" >
        <listeners>
          <add name="textListener" type="CustomTracer.CustomTraceListener,CustomTracer"/>
        </listeners>
      </source>
    </sources>
    <switches>
      <add name ="OnlyErrors" value ="Error"/>
    </switches>
  </system.diagnostics>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...