34

さて、私は少し奇妙なバグを抱えています...

これはうまくいきます:

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;
}

また、デバッグできません。プログラムがロードされるとクラッシュします。ブレークポイントをどこかに置いても、ヒットしません。すぐにエラーになります。

4

5 に答える 5

34

要素が完全にロードされる前、または参照がまだ設定されていないため、例外が発生する可能性があります。null参照が でなくでIsLoadedある場合にのみ、プロパティを設定してみてくださいtrue

于 2012-08-28T18:34:52.267 に答える
7

この問題を診断するには、TargetInvocationException の原因となっているコード行を try ブロック内に配置します。

このタイプのエラーをトラブルシューティングするには、内部例外を取得します。さまざまな問題が原因である可能性があります。

try
{
    // code causing TargetInvocationException
}
catch (Exception e)
{
    if (e.InnerException != null)
    {
    string err = e.InnerException.Message;
    }
}
于 2015-09-16T20:49:09.573 に答える
0

IsCheckedINotifyPropertyChanged を実装する Property を宣言し、次に databind SelectedIndex(IValueConverter を使用) および(IValueConverter を使用) を宣言すると、Checked Event を使用してトグルおよびFillを切り替える代わりに、問題が少なくなると思います。SelectedIndexFill

于 2012-08-28T20:05:55.077 に答える
0

これは多くの場合、null オブジェクトを処理しようとしたことが原因です。たとえば、null の Bindable リストを空にしようとすると、例外がトリガーされます。

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

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

これは、null をチェックすることで簡単に修正できます。

if (ProductsList!= null) ProductsList.Clear();
于 2016-03-29T16:41:37.713 に答える