当前位置: 首页 > news >正文

《Applications=Code+Markup》读书札记(2)——创建一个简单的 WPF 程序的代码结构及关于 Window 实例位置设置问题...

使用代码构建一个简单的 WPF 程序可能有多种代码结构:

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 ;
}
}
}


转载于:https://www.cnblogs.com/daocaoren/archive/2011/06/18/2084037.html

相关文章:

  • 敏捷方法之极限编程(XP)和 Scrum区别
  • squid vary机制实现详解(附流程图)
  • 构建办公环境网络
  • ttylinux 设置
  • extmail显示天气预报
  • SQLite基本使用
  • RHEL 6 简易搭建samba服务 RHCE
  • android开发(8) 使用ViewFlipper来用手势切换画面
  • linux LAMP 下我们首选DDOS default 来防御DDOS!
  • Gartner:XenServer你是领导者!
  • C++用数组和链表分别实现Queue
  • Symfony2博客应用程序教程:第四部分(续)-测试安全页
  • 用vs2008打framework2.0的包
  • 网页的学习语言将仿佛使你生活更动人
  • 四级词汇(俞敏洪)-词根与词缀(二)
  • [笔记] php常见简单功能及函数
  • 《Java编程思想》读书笔记-对象导论
  • 2017-08-04 前端日报
  • 2017届校招提前批面试回顾
  • log4j2输出到kafka
  • Node 版本管理
  • Spring Cloud(3) - 服务治理: Spring Cloud Eureka
  • SpringBoot 实战 (三) | 配置文件详解
  • 服务器之间,相同帐号,实现免密钥登录
  • 漫谈开发设计中的一些“原则”及“设计哲学”
  • 前端工程化(Gulp、Webpack)-webpack
  • 如何胜任知名企业的商业数据分析师?
  • 小程序开发中的那些坑
  • #if 1...#endif
  • (1)(1.13) SiK无线电高级配置(六)
  • (1/2) 为了理解 UWP 的启动流程,我从零开始创建了一个 UWP 程序
  • (30)数组元素和与数字和的绝对差
  • (二)windows配置JDK环境
  • (分布式缓存)Redis哨兵
  • (附源码)spring boot智能服药提醒app 毕业设计 102151
  • (附源码)springboot猪场管理系统 毕业设计 160901
  • (附源码)ssm智慧社区管理系统 毕业设计 101635
  • (力扣记录)1448. 统计二叉树中好节点的数目
  • (全部习题答案)研究生英语读写教程基础级教师用书PDF|| 研究生英语读写教程提高级教师用书PDF
  • (算法)求1到1亿间的质数或素数
  • .bat批处理(十):从路径字符串中截取盘符、文件名、后缀名等信息
  • .gitignore文件_Git:.gitignore
  • ::什么意思
  • @Autowired和@Resource的区别
  • @Bean, @Component, @Configuration简析
  • [ 云计算 | AWS ] AI 编程助手新势力 Amazon CodeWhisperer:优势功能及实用技巧
  • [100天算法】-目标和(day 79)
  • [Android 13]Input系列--获取触摸窗口
  • [bzoj1038][ZJOI2008]瞭望塔
  • [BZOJ2208][Jsoi2010]连通数
  • [C#]winform利用seetaface6实现C#人脸检测活体检测口罩检测年龄预测性别判断眼睛状态检测
  • [c]扫雷
  • [elastic 8.x]java客户端连接elasticsearch与操作索引与文档
  • [Everyday Mathematics]20150130
  • [GPT]Andrej Karpathy微软Build大会GPT演讲(上)--GPT如何训练