首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WPF用户控件的加载事件多次触发。

WPF用户控件的加载事件多次触发。
EN

Stack Overflow用户
提问于 2010-08-06 05:51:27
回答 4查看 55.5K关注 0票数 42

要在WPF中实现基于选项卡的环境,我们需要将表单转换为用户控件,但是在这样做时,用户控件的Loaded事件会被调用两次。

在网上搜索的同时,其他人也指出了这个问题。如何确保只调用一次加载事件?因为当它被多次调用时,我们的控件的初始化会发生多次。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-03-03 20:56:05

正如本博客中所解释的,当控件即将呈现时(即添加到可视树中),将触发加载的事件。

有几个控件会导致您的控件多次加载/卸载。例如,本机WPF TabControl只呈现所选选项卡的内容。因此,当您选择一个新的选项卡时,先前选择的选项卡的内容将被卸载。如果单击“回退”到先前选定的选项卡,则会重新加载其内容。

其中一项工作是使用布尔值来标记是否已经像其他人所建议的那样初始化了控件。或者,您可以使用初始化事件代替。

票数 50
EN

Stack Overflow用户

发布于 2012-05-03 01:00:23

您的路由事件处理程序可以(而且应该)将自己从Loaded钩子中删除,这是它所做的第一件事。

代码语言:javascript
复制
public class MyClass : Window
{
    public MyClass()
    {
        Loaded += MyLoadedRoutedEventHandler;
    }

    void MyLoadedRoutedEventHandler(Object sender, RoutedEventArgs e)
    {
        Loaded -= MyLoadedRoutedEventHandler;
        /// ...
    }
};
票数 25
EN

Stack Overflow用户

发布于 2010-08-06 05:52:40

在事件中设置一个loaded标志,如果已经设置了标志,则不要做任何事情。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3421303

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档