要在WPF中实现基于选项卡的环境,我们需要将表单转换为用户控件,但是在这样做时,用户控件的Loaded事件会被调用两次。
在网上搜索的同时,其他人也指出了这个问题。如何确保只调用一次加载事件?因为当它被多次调用时,我们的控件的初始化会发生多次。
发布于 2011-03-03 20:56:05
正如本博客中所解释的,当控件即将呈现时(即添加到可视树中),将触发加载的事件。
有几个控件会导致您的控件多次加载/卸载。例如,本机WPF TabControl只呈现所选选项卡的内容。因此,当您选择一个新的选项卡时,先前选择的选项卡的内容将被卸载。如果单击“回退”到先前选定的选项卡,则会重新加载其内容。
其中一项工作是使用布尔值来标记是否已经像其他人所建议的那样初始化了控件。或者,您可以使用初始化事件代替。
发布于 2012-05-03 01:00:23
您的路由事件处理程序可以(而且应该)将自己从Loaded钩子中删除,这是它所做的第一件事。
public class MyClass : Window
{
public MyClass()
{
Loaded += MyLoadedRoutedEventHandler;
}
void MyLoadedRoutedEventHandler(Object sender, RoutedEventArgs e)
{
Loaded -= MyLoadedRoutedEventHandler;
/// ...
}
};发布于 2010-08-06 05:52:40
在事件中设置一个loaded标志,如果已经设置了标志,则不要做任何事情。
https://stackoverflow.com/questions/3421303
复制相似问题