我有一个函数可以更新我的UI
public void Checking()
{
// Do Something
}
我想在打开程序时调用这些函数:我认为我应该在main中调用它:
public MainWindow()
{
InitializeComponent();
Checking();
}
但是在这里我收到一个错误:
调用目标已引发异常。
附言:我正在使用WPF...有什么解决方案吗?
在你的构造函数中设置Windows Loaded事件并从那里调用你的Checking()方法。在完全加载 XAML 之前,UI 尚未准备好在构造器中进行交互。WPF 有一个事件,让您知道已发生这种情况(已加载事件)。
public MainWindow()
{
InitializeComponent();
this.Loaded += new RoutedEventHandler(MainWindow_Loaded);
}
void MainWindow_Loaded(object sender, RoutedEventArgs e)
{
Checking();
}
如果您仍然收到错误,那么您将需要查看您的内部异常,您应该被告知导致错误的原因。您还可以逐步执行 Checking() 方法以查看错误发生在哪一行。
[编辑] 下面是有关 Loaded 事件和 WPF 页面生命周期中事件顺序的一些其他资源:
MSDN: FrameworkElement.Loaded Event控制生命周期
您可以按照当前的方式使用该函数。但是 Checking() 中的某些内容可能需要加载您的面板(或其他内容)。
您可以创建一个在加载面板后触发的事件处理程序。然后你可以从那里调用你的 checking() 函数。
<StackPanel Loaded="myStackPanelLoaded" />
同样的事情也发生在我身上。
在 WPF 中,当Exception
出现在引发此消息的窗体的构造函数中时。 因此,请尝试在MainForm
的FormLoad
事件处理程序中调用 Checking()
函数。这样,您将看到程序中的Exception
类型。