[WPF学习资料] 窗口的生存周期

简介:

和所有类一样,窗口也有生存期,在第一次实例化窗口时生存期开始,然后就可以打开、激活和停用窗口,直到最终关闭窗口。

打开窗口

若要打开窗口,首先应创建一个窗口实例,这个功能由Application来完成:

 上面的代码中StartupUri指示的是这个实例的XAML文档,也是这个应用程序的默认窗口类。当然也可以使用Startup属性,定义一个事件,代码如下:

复制代码
1  < Application
2       xmlns ="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
3      xmlns:x ="http://schemas.microsoft.com/winfx/2006/xaml"
4      x:Class ="XAMLDemo.App"
5      Startup ="app_Startup" >

6 </Application>

复制代码

 其中App必须继承Application类,并实现void app_Startup(object sender, StartupEventArgs e)在这里初始化一个类,并调用Show来显示窗口。

注:ShowDialog方法来模式打开窗口,含有隶属之意,如对话框等等。

窗口所属权

在使用Show方法或在XAML的StartupUri打开的窗口与创建它的窗口之间没有隐式关系,如果想建立想MDI那样的窗口所属关系,可以使用Owner属性。

 建立了所属权之后:

 窗口激活

 当第一次打开窗口时就会激活,则响应Activated事件,停止激活时将响应Deactivated事件。处理 Activated 和 Deactivated 的一个常见原因是为了启用和禁用只有在窗口活动时才能够运行的功能。例如,某些窗口显示的交互式内容需要持续的用户输入或需要用户时刻注意,包括游戏和视频播放机。

关闭窗口 

响应closing和closed事件。

 

慢慢学习!

本文转自网魂小兵博客园博客,原文链接:http://www.cnblogs.com/xdotnet/archive/2009/01/09/wpf_windowlife.html,如需转载请自行联系原作者

相关文章
|
XML 开发框架 前端开发
WPF学习之基础知识篇
WPF(Windows Presentation Foundation)具有一个复杂且强大的架构,旨在提供丰富的用户界面、图形、动画和多媒体功能。
354 9
|
前端开发 C#
WPF学习小记
WPF学习小记
153 2
|
11月前
|
数据处理 C# Windows
WPF中实现弹出进度条窗口
【11月更文挑战第14天】在WPF中实现弹出进度条窗口,需创建进度条窗口界面(XAML)和对应的代码-behind(C#)。通过定义`ProgressWindow`类,包含`ProgressBar`和`TextBlock`,并在主窗口或逻辑代码中调用,模拟长时间任务时更新进度条,确保UI流畅。
460 0
|
开发者 C# UED
WPF多窗口应用程序开发秘籍:掌握窗口创建、通信与管理技巧,轻松实现高效多窗口协作!
【8月更文挑战第31天】在WPF应用开发中,多窗口设计能显著提升用户体验与工作效率。本文详述了创建新窗口的多种方法,包括直接实例化`Window`类、利用`Application.Current.MainWindow`及自定义方法。针对窗口间通信,介绍了`Messenger`类、`DataContext`共享及`Application`类的应用。此外,还探讨了布局控件与窗口管理技术,如`StackPanel`与`DockPanel`的使用,并提供了示例代码展示如何结合`Messenger`类实现窗口间的消息传递。总结了多窗口应用的设计要点,为开发者提供了实用指南。
875 0
|
人工智能 C#
WPF自定义控件库之Window窗口
本文以自定义窗口为例,简述WPF开发中如何通过自定义控件来扩展功能和样式,仅供学习分享使用,如有不足之处,还请指正。
523 5
|
C#
WPF 创建无边框的圆角窗口
原文:WPF 创建无边框的圆角窗口 如题所述,在WPF中要创建一个没有边框且为圆角的窗体,有如下几步工作要进行: 第一步:去掉窗体默认样式的边框 首先将窗体的背景设为透明,将允许透明的属性设置为True,...
2868 0
Revit 二次开发添加WPF窗口的办法
Revit 二次开发添加WPF窗口的办法
Revit 二次开发添加WPF窗口的办法
WPF学习—INotifyPropertyChanged Interface
WPF学习—INotifyPropertyChanged Interface
WPF学习—INotifyPropertyChanged Interface