首页 新闻 会员 周边

WPF中的Window初始化的事件先后顺序和作用都是什么?高手帮忙(懂WPF的都进来瞅瞅)

0
悬赏园豆:30 [已解决问题] 解决于 2010-09-02 12:48

最近看MSDN中WPF概述的时候有疑惑,当我们在Startup事件中显示一个Window1的窗口的时候,那么就执行窗体的构造函数,这里我想问下所谓的InitializeComponent()事件和Winform里的InitializeComponent事件是不是作用相同,那么所谓的Initialized事件由是干什么的,二者都是初始化,那么初始化的作用范围又是什么呢?经我测试Initialized事件在InitializeComponent()事件之前调用,而对于数据绑定,样式使用又是在上面的两个事件中发生还是load事件完成呢?希望高手能给我解惑!!!!小弟这里有礼了!!!!

蝶殇的主页 蝶殇 | 初学一级 | 园豆:32
提问于:2010-09-02 10:14
< >
分享
最佳答案
0
收获园豆:10
Astar | 高人七级 |园豆:40805 | 2010-09-02 11:36
其他回答(1)
0

WPF 程序跟WinForm程序一样,都需要一个启动类型:

WinForm 下面是 Program.cs ;WPF 是Application

Application 实例化后会创建一个Window 窗口。

Window 构造函数 调用 InitializeComponent() 来初始化窗口内容,跟WinForm 中的一样。

收获园豆:20
HUHU慈悲 | 园豆:9973 (大侠五级) | 2010-09-02 10:37
那Initialized事件的作用呢,又有什么用呢?
支持(0) 反对(0) 蝶殇 | 园豆:32 (初学一级) | 2010-09-02 10:38
这个是Window 初始化完成后触发的事件,你可以注册该事件,在初始化完成了,做自己的处理,比如,加载数据、附加样式等等,
支持(0) 反对(0) HUHU慈悲 | 园豆:9973 (大侠五级) | 2010-09-02 10:41
InitializeComponent()事件是系统应用程序自己调用的吧,当把所有的元素都初始化后,才调用Initialized,在此事件加载数据附加样式?但是为什么 public Window2() { this.Initialized += new EventHandler(Window2_Initialized); InitializeComponent(); } private void Window2_Initialized(object sender,EventArgs e) { string aa = tb.Text; this.tb.Text = "hello"; } 这样就会被注册到事件里面,如果this.Initialized += new EventHandler(Window2_Initialized); 放在InitializeComponent()事件后就不会执行,也就是说InitializeComponent()事件的执行将Initialized事件注册了,可是Loaded事件为什么在前和后注册都可会运行呢
支持(0) 反对(0) 蝶殇 | 园豆:32 (初学一级) | 2010-09-02 10:59
InitializeComponent() 是个方法,做初始化的。Window 的构造函数里面调用InitializeComponent()方法来做初始化元素的操作,完成初始化后,InitializeComponent()方法内部触发Initialized 事件。所以必须在InitializeComponent() 方法之前注册该事件。而Load 事件就没这个限制了。
支持(0) 反对(0) HUHU慈悲 | 园豆:9973 (大侠五级) | 2010-09-02 11:57
Window 有几个重要的事件:他们调用的顺序是: Window.Initialized Window.Activatied Window.Loaded Window.ContentRendered Window.DeActivatied Window.Closing Window.UnLoad Window.Closed Window.Activatied可能会与Window.DeActivatied 切换多次(窗体切换的时候发生)
支持(0) 反对(0) HUHU慈悲 | 园豆:9973 (大侠五级) | 2010-09-02 12:06
很感谢你的回答,让我知道了原理
支持(0) 反对(0) 蝶殇 | 园豆:32 (初学一级) | 2010-09-02 12:51
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册