我有一个功能可以更新我的UI
public void Checking()
{
// Do Something
}
我想在打开程序时调用这些函数:我相信我应该在main中调用它:
public MainWindow()
{
InitializeComponent();
Checking();
}
但是我在这里得到一个错误:
调用目标抛出了异常。
P.S:即时通讯使用WPF ... 对此有何解决方案?
答案 0 :(得分: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()方法以查看错误发生在哪一行。
[edit]以下是有关Loaded事件的一些其他资源以及WPF页面生命周期中的事件顺序:
答案 1 :(得分:0)
您可以按照您使用的方式使用该功能。但是,Checking()中的某些内容可能需要加载Panel(或其他内容)。
您可以创建一个在加载面板后触发的事件处理程序。然后你可以从那里调用你的checking()函数。
<StackPanel Loaded="myStackPanelLoaded" />
答案 2 :(得分:0)
同样的事情发生在我身上。
在WPF中,当Exception
出现在表单的构造函数中时,抛出此消息。因此,请尝试在Checking()
的{{1}}事件处理程序中调用FormLoad
函数。通过这种方式,您将看到您的计划中有MainForm
种类。