it-swarm.com.de

"System.Reflection.TargetInvocationException" ist in PresentationFramework.dll aufgetreten

Okay, ich habe einen seltsamen Fehler ...

Das funktioniert gut:

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

Dies wirft System.Reflection.TargetInvocationException:

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

Außerdem lässt es mich nicht debuggen; es stürzt ab, wenn das Programm geladen wird. Wenn ich irgendwo einen Haltepunkt setze, trifft es ihn nicht. es ist einfach sofort fehlerhaft.

29
Justin Kirk

Das Ereignis wird wahrscheinlich ausgelöst, bevor die Elemente vollständig geladen sind oder die Verweise noch nicht gesetzt sind, daher die Ausnahmen. Versuchen Sie nur, Eigenschaften festzulegen, wenn der Verweis nicht null ist und IsLoadedtrue ist.

32
H.B.

Platzieren Sie zum Diagnostizieren dieses Problems die Codezeile, die die TargetInvocationException verursacht, innerhalb des try-Blocks.

Rufen Sie die innere Ausnahme ab, um diesen Fehler zu beheben. Dies kann auf verschiedene Probleme zurückzuführen sein.

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

Wenn das radiobuttongeprüfte Ereignis eintritt, bevor der Inhalt des Fensters vollständig geladen ist, d. H. Die Ellipse vollständig geladen ist, wird eine solche Ausnahme ausgelöst. Überprüfen Sie daher, ob die Benutzeroberfläche des Fensters geladen ist (wahrscheinlich durch das Window_ContentRendered-Ereignis usw.).

Ich denke, Sie werden weniger Probleme haben, wenn Sie eine Eigenschaft deklariert haben, die INotifyPropertyChanged implementiert, dann databind IsChecked, SelectedIndex (mithilfe von IValueConverter) und Fill (mithilfe von IValueConverter), anstatt das überprüfte Ereignis zu verwenden, um SelectedIndex und Fill zu wechseln.

0
Bojin Li

Dies wird häufig durch einen Versuch verursacht, ein Nullobjekt zu verarbeiten .. Ein Beispiel, bei dem versucht wird, eine bindbare Liste zu leeren, die Null ist, löst die Ausnahme aus:

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

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

Dies kann leicht durch Überprüfen auf null behoben werden:

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