0

我有一个功能可以更新我的 UI

public void Checking()
{
    // Do Something 
}

我想在打开程序时调用这些函数:我相信我应该在 main 中调用它:

public MainWindow()
{
    InitializeComponent();
    Checking(); 
}

但是在这里我遇到了一个错误:

调用的目标已引发异常。

PS:我正在使用 WPF ......有什么解决方案吗?

4

3 回答 3

1

在您的构造函数中设置 Windows Loaded 事件并从那里调用您的 Checking() 方法。UI 尚未准备好在构造函数中进行交互,直到 XAML 完全加载。WPF 有一个事件让您知道这已经发生(Loaded 事件)。

public MainWindow()
{
    InitializeComponent();
    this.Loaded += new RoutedEventHandler(MainWindow_Loaded);
}

void MainWindow_Loaded(object sender, RoutedEventArgs e)
{
    Checking(); 
}

如果您仍然遇到错误,那么您将需要查看您的内部异常,应该告诉您是什么导致了错误。您还可以单步执行 Checking() 方法以查看错误发生在哪一行。

[编辑] 以下是有关 Loaded 事件和 WPF 页面生命周期中事件顺序的一些附加资源:

MSDN:FrameworkElement.Loaded 事件 控制生命周期

于 2013-01-29T18:18:40.010 回答
0

您可以按照您使用的方式使用该功能。但是 Checking() 中的某些内容可能需要加载您的面板(或其他内容)。

您可以创建一个在面板加载后触发的事件处理程序。然后你可以从那里调用你的 checks() 函数。

<StackPanel Loaded="myStackPanelLoaded" />
于 2013-01-29T05:13:49.950 回答
0

同样的事情发生在我身上。

在 WPF 中,当Exception表单的构造函数中发生此消息时,将引发此消息。所以尝试Checking()在. 通过这种方式,您将看到您的程序中有哪些类型。FormLoadMainFormException

于 2013-01-29T05:23:31.953 回答