C# ';System.Reflection.TargetingException';发生在PresentationFramework.dll中
好吧,我有点奇怪的虫子 这很好:C# ';System.Reflection.TargetingException';发生在PresentationFramework.dll中,c#,.net,wpf,C#,.net,Wpf,好吧,我有点奇怪的虫子 这很好: private void radioButtonNormalPoint_Checked(object sender, RoutedEventArgs e) { //comboBoxNormalPoint.SelectedIndex = 0; //ellipsePoint.Fill = System.Windows.Media.Brushes.Black; } 这将抛出系统.Reflection.TargetInvocationException:
private void radioButtonNormalPoint_Checked(object sender, RoutedEventArgs e)
{
//comboBoxNormalPoint.SelectedIndex = 0;
//ellipsePoint.Fill = System.Windows.Media.Brushes.Black;
}
这将抛出系统.Reflection.TargetInvocationException
:
private void radioButtonNormalPoint_Checked(object sender, RoutedEventArgs e)
{
comboBoxNormalPoint.SelectedIndex = 0;
ellipsePoint.Fill = System.Windows.Media.Brushes.Black;
}
而且,它不允许我调试它;它在程序加载时崩溃。如果我把一个断点放在任何它没有命中的地方;它只是立即出错。事件可能是在元素完全加载或引用尚未设置之前引发的,因此会出现异常。如果引用不为
null
且已加载
为true
请仅尝试设置属性。我认为,如果您声明了一个实现INotifyPropertyChanged的属性,然后选中数据绑定,选择索引(使用IValueConverter)和填充,则问题会少一些(使用IValueConverter)切换到它,而不是使用选中事件切换SelectedIndex
和Fill
如果radiobutton选中事件发生在窗口内容完全加载之前,即椭圆完全加载之前,则会引发此类异常。因此,请检查是否加载了窗口的UI(可能是由Window_ContentRendered事件等引起的)。若要诊断此问题,请将导致TargetInvocationException的代码行放在try块内
若要解决此类错误,请获取内部异常。这可能是由于许多不同的问题造成的
try
{
// code causing TargetInvocationException
}
catch (Exception e)
{
if (e.InnerException != null)
{
string err = e.InnerException.Message;
}
}
这通常是由于试图处理空对象造成的。
例如,尝试清空空的可绑定列表将触发异常:
public class MyViewModel {
[BindableProperty]
public virtual IList<Products> ProductsList{ get; set; }
public MyViewModel ()
{
ProductsList.Clear(); // here is the problem
}
}
记录InnerException和堆栈跟踪。您必须注释掉这两行,对吗?或者崩溃只发生在第一行?SelectedINdex=0。它是任何行(即使我只声明一个变量int i=0;,也无所谓),并且内部异常为null,但在弹出的未处理异常中(因为我无法捕获它)它表示附加信息:调用的目标已引发异常。它可能是事件处理程序连接。请告诉我将事件连接到何处。如果可能,请在后面的代码中执行此操作。导致此错误的原因是,单选按钮在加载时已被选中,并尝试将值分配给combobox。selectedindex未被选中未加载yet@JustinKirk:正如我所预料的:)在我的例子中,我复制并粘贴了一个文本框,其中一个函数在引用自身的TextChanged上触发。我忘记更改第二个框的函数目标,因此它发现另一个文本框仍然为空时就死了。
if (ProductsList!= null) ProductsList.Clear();