WPF程序设计指南: The Application and the Window

1. 最简单的WPF程序: A console application project: say hello.

    需要引用的DLL: PresentationCore, PresentationFramework, System, WindowBase

代码
using System;
using System.Windows;

namespace Petzold.SayHello
{
class SayHello
{
[STAThread]
public static void Main()
{
Window win
= new Window();
win.Title
= "Say Hello";
win.Show();

Application app
= new Application();
app.Run();
}
}
}

注:

  • 可在Project ->Properties菜单中设置OutPut Type为“console Application” 或者 “Window Application”
  • 一个程序只能创建一个Application对象,对于程序其他地方来说,此application对象的作用就如同固定的锚一般。
  • Run方法必须保留到最后,Run方法一旦被调用,就不会返回,直到窗口关闭为止。
  • 只有在调用了Run之后,window对象才能响应用户的输入。

2.  使用简单事件处理器

代码
using System;
using System.Windows;
using System.Windows.Input;


namespace Petzold.HandleAnEvent
{
class HandleAnEvent
{
[STAThread]
public static void Main()
{
Application app
= new Application();

Window win
= new Window();
win.Title
= "Handle An Event";
win.MouseDown
+= WindowOnMouseDown;

app.Run(win);
}
static void WindowOnMouseDown(object sender, MouseButtonEventArgs args)
{
Window win
= sender as Window;
string strMessage =
string.Format("Window clicked with {0} button at point ({1})",
args.ChangedButton, args.GetPosition(win));
MessageBox.Show(strMessage, win.Title);
}
}
}

 注:

  • MouseDown事件所需要的实践处理器,必须符合MouseButtonEventHandler委托:第一个参数类型是object, 第二个参数类型是MouseButtonEventArgs
  •  object sender: 消息来源 MouseButtonEventArgs args:事件相关参数
  • 获取主窗口的办法:Window win=Application.Current.MainWindow

3. 使用Appliaction 类的事件和方法

   Application类定义了很多有用的事件,大多数事件都有对应的protected方法,可以用来发出事件。

   如果你的程序需要Application类的某些事件,你可以为这些事件安装事件处理器,另一个更为方便的方法,就是定义一个类,继承Application.

  • Application所定义的Startup事件是利用protected OnStartup方法来产生的。一旦调用Appliction对象的Run方法,Onstartup方法会被马上调用
  • 当Run即将返回时,会调用OnExit方法,并发出对应的Exit事件。
  • OnSessionEnding方法和SessionEndin事件表示用户已经选择要注销Windows操作系统,或者要关闭电脑。
继承Application类,以利用其方法
using System;
using System.Windows;
using System.Windows.Input;

namespace Petzold.InheritTheApp
{
class InheritTheApp : Application
{
[STAThread]
public static void Main()
{
InheritTheApp app
= new InheritTheApp();
app.Run();
}
protected override void OnStartup(StartupEventArgs args)
{
base.OnStartup(args);

Window win
= new Window();
win.Title
= "Inherit the App";
win.Show();
}
protected override void OnSessionEnding(SessionEndingCancelEventArgs args)
{
base.OnSessionEnding(args);

MessageBoxResult result
=
MessageBox.Show(
"Do you want to save your data?",
MainWindow.Title, MessageBoxButton.YesNoCancel,
MessageBoxImage.Question, MessageBoxResult.Yes);

args.Cancel
= (result == MessageBoxResult.Cancel);
}
}
}

 

4. Window 和 Application 类的一些properties

     Application:

  • MainWindow: Application的主窗口,默认为第一个被创建的窗口
  • 指定主窗口:MainWindow=win;
  • ShutdownMode: Application的结束模式。
  • Windows,Application所包含的所有窗口。

    Window:

  • ShowInTask: Window是否在任务栏中显示。
  • owner: Window的拥有者(也是Window),“被拥有者”一定出现在“拥有者”前面,“拥有者”关闭或者最小化,“被拥有者”也会关闭或者消失。

 

 

posted on 2010-08-17 21:25  I过T  阅读(601)  评论(0编辑  收藏  举报

导航