Подтвердить что ты не робот

"System.Reflection.TargetInvocationException" произошло в PresentationFramework.dll

Хорошо, у меня немного странная ошибка...

Это отлично работает:

private void radioButtonNormalPoint_Checked(object sender, RoutedEventArgs e)
{
   //comboBoxNormalPoint.SelectedIndex = 0;
   //ellipsePoint.Fill = System.Windows.Media.Brushes.Black;
}

Это бросает System.Reflection.TargetInvocationException:

private void radioButtonNormalPoint_Checked(object sender, RoutedEventArgs e)
{
   comboBoxNormalPoint.SelectedIndex = 0;
   ellipsePoint.Fill = System.Windows.Media.Brushes.Black;
}

Кроме того, он не позволяет мне отлаживать его; он сбой при загрузке программы. Если я поставил точку останова в любом месте, он не ударил ее; это просто ошибки сразу.

4b9b3361

Ответ 1

Событие, вероятно, возникает до того, как элементы полностью загружены или ссылки все еще не установлены, следовательно, исключения. Попробуйте установить только свойства, если ссылка не null и IsLoaded равна true.

Ответ 2

Чтобы диагностировать эту проблему, поместите строку кода, вызывающую исключение TargetInvocationException внутри блока try.

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

try
{
    // code causing TargetInvocationException
}
catch (Exception e)
{
    if (e.InnerException != null)
    {
    string err = e.InnerException.Message;
    }
}

Ответ 3

Я думаю, что у вас будет меньше проблем, если вы объявите свойство, которое реализует INotifyPropertyChanged, затем databind IsChecked, SelectedIndex (используя IValueConverter) и Fill (используя IValueConverter) к нему вместо использования Проверенного события для переключения SelectedIndex и Fill.

Ответ 4

Если событие с проверкой радиообъекта происходит до того, как содержимое окна будет загружено полностью, то есть эллипс будет загружен полностью, такое исключение будет выбрано. Поэтому проверьте, загружен ли пользовательский интерфейс окна (возможно, с помощью события Window_ContentRendered и т.д.).

Ответ 5

Это часто вызвано попыткой обработки нулевого объекта. Например, попытка очистить список Bindable, который является null, вызовет исключение:

public class MyViewModel {
    [BindableProperty]
    public virtual IList<Products> ProductsList{ get; set; }

    public MyViewModel ()
    {
        ProductsList.Clear(); // here is the problem
    }
}

Это можно легко устранить, установив нуль:

if (ProductsList!= null) ProductsList.Clear();