《Applications=Code+Markup》读书札记(2)——创建一个简单的 WPF 程序的代码结构及关于 Window 实例位置设置问题
2011-06-18 00:24
1056 查看
使用代码构建一个简单的 WPF 程序可能有多种代码结构:
1、最简短的。读者可以看下面的代码:MyWindow 继承自 Window 类,在入口函数里面创建 Application 实例并使用该对象 Run 方法调用 Window
实例的 Show 方法。这种实现方式就是可读性太差,让人摸不着头脑。
待续……
PS:关于 Window 实例位置设置问题
很多读者首先想到的可能是 WindowStartupLocation 枚举——不就给 Window 实例的 WindowStartupLocation 属性赋予 WindowStartupLocation 枚举的一个常量么?聪明的读者,你有没想过这里面的具体实现呢?其实和 Window 实例位置相关的属性有 Width、Height、Left 和 Top,而且有先后顺序,一般地,我们得先给 Width 和 Height 赋好值后才去指定其 Left 和 Top 属性,否则我们的代码会失效,有可能我们的本意是让窗口居中而编译运行后却发现窗口出现在系统默认位置(WindowStartupLocation.Manual)。在这里需要注意,如果在 Window 构造函数里没有指定 Width 和 Height 属性就别在构造函数里指定 Left 和 Top 属性,而应在 Window 实例的 Loaded 事件的事件处理器里指定。
1、最简短的。读者可以看下面的代码:MyWindow 继承自 Window 类,在入口函数里面创建 Application 实例并使用该对象 Run 方法调用 Window
实例的 Show 方法。这种实现方式就是可读性太差,让人摸不着头脑。
using System; using System.Windows; namespace WpfAppByCode { class MyWindow : Window { [STAThread] public static void Main() { new Application().Run(new MyWindow()); } } }
待续……
PS:关于 Window 实例位置设置问题
很多读者首先想到的可能是 WindowStartupLocation 枚举——不就给 Window 实例的 WindowStartupLocation 属性赋予 WindowStartupLocation 枚举的一个常量么?聪明的读者,你有没想过这里面的具体实现呢?其实和 Window 实例位置相关的属性有 Width、Height、Left 和 Top,而且有先后顺序,一般地,我们得先给 Width 和 Height 赋好值后才去指定其 Left 和 Top 属性,否则我们的代码会失效,有可能我们的本意是让窗口居中而编译运行后却发现窗口出现在系统默认位置(WindowStartupLocation.Manual)。在这里需要注意,如果在 Window 构造函数里没有指定 Width 和 Height 属性就别在构造函数里指定 Left 和 Top 属性,而应在 Window 实例的 Loaded 事件的事件处理器里指定。
using System; using System.Windows; namespace WpfAppByCode { class InheritWindow : Window { [STAThread] public static void Main() { new Application().Run(new InheritWindow()); } public InheritWindow() { this.Title = "稻草人"; this.Loaded += WindowOnLoaded; } private void WindowOnLoaded(object sender, RoutedEventArgs e) { this.Left = (SystemParameters.PrimaryScreenWidth - this.ActualWidth) / 2; this.Top = (SystemParameters.PrimaryScreenHeight - this.ActualHeight) / 2; } } }
相关文章推荐
- 《Applications=Code+Markup》读书札记(1)——一个简单的 WPF 程序
- 关于用java创建一个.properties文件,程序结果为空的问题
- Ext通过按钮创建一个Window实例代码
- C# 不用IDE 创建一个简单的Window窗口程序
- 有关于在Java 类的静态初始化块中创建一个自身实例的问题。
- WPF 只允许运行一个实例(简单代码)
- 关于支持向量机(SVM)的一个简单应用实例及matlab代码
- 从vue基础开始创建一个简单的增删改查的实例代码(推荐)
- 我也提一个关于递归的问题,代码简单,不绕,希望一起讨论一下~
- 利用TreeView动态创建一个树形结构-简单实例 .Net
- UNIX-LINUX编程实践教程->第八章->实例代码注解->写一个简单的shell->在shell中启动另一个程序
- 小程序大问题,MSDN中一个小小示例所带来的疑问,一个关于DataList的一个简单应用
- 菜鸟发问,请各位不吝赐教啊! 关于一个简单的程序的理解问题
- 小程序料理第二课 代码结构和简单实例
- 使用事件处理创建一个简单的绘图实例程序 python
- 小程序大问题,MSDN中一个小小示例所带来的疑问,一个关于DataList的一个简单应用
- 一个window下的简单的全局快捷键向指定的进程发送的c代码与exe程序下载
- 一个简单关于学生成绩管理的C++程序代码,但是对于拷贝析构函数目前还是不知其作用何在
- 一个window下的简单的全局快捷键向指定的进程发送的c代码与exe程序下载(二)
- 关于一个asp的简单聊天室的代码问题