2000条你应知的WPF小姿势 基础篇40-44 启动关闭,Xaml,逻辑树
原文:2000条你应知的WPF小姿势 基础篇<40-44 启动关闭,Xaml,逻辑树>
在正文开始之前需要介绍一个人:Sean Sexton. 来自明尼苏达双城的软件工程师。最为出色的是他维护了两个博客:2,000Things You Should Know About C# 和 2,000 Things You Should Know About WPF 。他以类似微博式的150字简短语言来每天更新一条WPF和C#重要又容易被遗忘的知识。Follow他的博客也有一段日子了,很希望能够分享给大家。
本系列我不仅会翻译他的每一个tip,也会加入自己开发之中的看法和见解。本系列我希望自己也能和他一样坚持下来,每天的进步才能促成伟大。
在这里郑重说明.该系列是基于Sean Sexton先生的英文博客, Sean Sexton拥有全部版权和撤销权利。
前文:<1-7> , <8-14>,<15-21>,<22-27>, <28-33>,<34-39>
[小九的学堂,致力于以平凡的语言描述不平凡的技术。如要转载,请注明来源:小九的学堂。cnblogs.com/xfuture]
#40 WPF应用主窗体
一个WPF应用程序至少会创建一个主窗体但始终只有一个主窗体MainWindow。Application.MainWindow属性指定了主窗体的引用。默认情况下,主窗体都是第一个创建的窗体。当然你可以在Xaml中来手动指定主窗体。
<Application xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"StartupUri="StartupWindow.xaml"><Application.MainWindow><NavigationWindow Source="MainPage.xaml" Visibility="Visible"></NavigationWindow></Application.MainWindow> </Application>
在应用程序启动过程,下面的示例演示如何实例化代码中的 MainWindow
public partial class App : Application {void App_Startup(object sender, StartupEventArgs e){MainWindow window = new MainWindow();window.Show();} }
#41 ShutdownMode
WPF Application类里包含一个ShutDownMode的属性。
/// <summary>/// 指定应用程序将如何关闭。由 <see cref="P:System.Windows.Application.ShutdownMode"/> 属性使用。/// </summary>public enum ShutdownMode : byte{OnLastWindowClose,OnMainWindowClose,OnExplicitShutdown,}
指定了应用程序关闭的规则。一般来说是OnLastWindowClose,即关闭了所有窗口后应用程序关闭。可以手动指定为OnMainWindowClose(即主窗体关闭时程序关闭)和OnExplicitShutdown(必须要显式调用ShutDown方法,不然即使关闭窗口,程序也会后台运行)
#42 设计视觉元素的三个位置
WPF设计图形元素时,比如图形元素在Window,Page或者UserControl中,有三个地方可以来对这个对象进行更改:
更改布局(Layout)
1. 在WPF设计器(designer)中的design view里进行更改。
2. WPF设计器中XAML界面直接进行更改。
更改行为(xaml.cs)
3. 在IDE中对C#代码进行更改。
#43 Visual Studio创建Xaml
在Visual Studio中双击Xaml code可以打开一个分屏的Xaml code和Design界面,如下:
在Design的Tab中,你可以通过拖拽控件来进行UI设计。在属性栏进行对控件的更改。
在Xaml的Tab,可以通过修改代码的方式直接完成上面两步。
VS会保持设计界面和Xaml界面的同步,当修改其中之一时,另外一个tab会实时的更新。
#44 逻辑树
WPF逻辑树是用户界面元素的层次结构关系的树状图。如果你的UI是在Xaml里定义的,逻辑树就是Xaml中元素整合为具有父子关系的树的模型。它描述了在运行时这些元素之间的关系。逻辑树可以帮助我们理解:
1. Resource lookup 资源查找
2. Property inheritance 属性继承
3. Event routing 路由事件。
下面有个例子:
<Window x:Class="WpfApplication4.MainWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"Title="A window.." Height="350" Width="525"><StackPanel><Button Content="Click Me" Height="23" HorizontalAlignment="Left" Width="75" Click="button1_Click" /><TextBox /><ListBox><ListBoxItem Content="Barley"/><ListBoxItem Content="Oats"/></ListBox></StackPanel> </Window>
逻辑树的模型是:
后篇会对WPF内部机制继续做探索,敬请关注!
推荐:女友的“网页设计”之路
如果觉得有帮助,右下角赞一下吧~ (* *)
转载于:https://www.cnblogs.com/lonelyxmas/p/3807145.html
2000条你应知的WPF小姿势 基础篇40-44 启动关闭,Xaml,逻辑树相关推荐
- 2000条你应知的WPF小姿势 基础篇45-50 Visual TreeLogic Tree 附带两个小工具
在正文开始之前需要介绍一个人:Sean Sexton. 来自明尼苏达双城的软件工程师.最为出色的是他维护了两个博客:2,000Things You Should Know About C# 和 2, ...
- 2000条你应知的WPF小姿势 基础篇69-73 WPF Freeze机制和Template
在正文开始之前需要介绍一个人:Sean Sexton. 来自明尼苏达双城的软件工程师.最为出色的是他维护了两个博客:2,000Things You Should Know About C# 和 2, ...
- 声学工程师应知道的150个声学基础知识
和大家分享一下声学工程师应知道的150个声学基础知识. 注意,声学工程师和音频工程师可不是同一岗位,前者会更侧重于硬件,后者侧重于软件层面.但是关于声音的一些基础内容还是相同的,可以多多了解!!! 以 ...
- 声学工程师应知道的150个声学基础知识(全篇)
和大家分享一下声学工程师应知道的150个声学基础知识. 注意,声学工程师和音频工程师可不是同一岗位,前者会更侧重于硬件,后者侧重于软件层面.但是关于声音的一些基础内容还是相同的,可以多多了解!!! 以 ...
- 《微信小程序-基础篇》初识微信小程序
大家好,好久不见了,前段时间各种原因分享不稳定,后面一段时间内参与了主站的原力计划,请麻烦各位支持一下,万分感谢- 本系列将从零开始介绍微信小程序的开发,介绍完基础以后会实际同步开发一个微信小程序的项 ...
- html 自定义属性_五道自测题-你我都应知道的HTML小知识
这几天学习了HTML相关的基础知识之后,老师出了五道自测题,通过这几天学习的总结,和查阅相关文档,我也作出了自己的理解,以下是我学习的相关心得分享给大家. 1.HTML元素.标签和属性之间的关联与区别 ...
- 小程序基础篇-视图与逻辑
本次学习目标: 实现页面间的导航跳转 实现下拉刷新 实现上拉加载更多 知道小程序常用的生命周期函数 1.页面导航 页面导航指的是页面之前相互的跳转 浏览器之间的页面导航有两种:<a>;lo ...
- 微信小程序基础篇-模板与配置
本篇学习目标 使用WXML渲染模板语法渲染页面结构 使用WXSS样式美化结构 使用app.json对项目进行全局配置 使用page.json对页面进行个性化配置 如何发起网络请求 1.WXML模板语法 ...
- java必知必会_Java必知必会--spring解析基础篇
一.了解spring ①spring是为了简化企业级开发而提出的一个开源框架,它特有的轻量级以及非侵入式特点使得其可以自由组合各个功能模块. ②spring的ioc是实现非侵入式的主要部分(主要通过配 ...
- 年度巨献-WPF项目开发过程中WPF小知识点汇总(原创+摘抄)
WPF中Style的使用 Styel在英文中解释为"样式",在Web开发中,css为层叠样式表,自从.net3.0推出WPF以来,WPF也有样式一说,通过设置样式,使其WPF控件外 ...
最新文章
- JVM第三篇 — JVM是怎么工作的?
- php中int()强制转换,php下intval()和int强制转换使用的区别是什么
- crackme算法分析---CRC32算法的妙用
- Hive_ 对比分区,分桶
- GCC编译器和GDB调试器常用选项
- leetcode - K 站中转内最便宜的航班
- org.apache.struts.chain.commands.InvalidPathException: No action config found for the specified url.
- 葡萄城 SpreadJS 表格控件 V11 产品白皮书
- 2020 Pwn2Own东京大赛落幕,Master of Pwn 诞生
- 《Genesis-3D游戏引擎系列教程-进阶篇》10:动画融合
- 全新开始fighting
- MacOS ClashX 配置代理端口为0问题7890 配置iterm2终端代理
- java实现https请求单向认证、双向认证
- 海明码计算(校验码)
- 博科光纤交换机配置及管理 CLI篇
- vs2015官方下载链接
- latex如何生成pdf标签/目录?
- windows7操作系统安装步骤(精简版)
- win7 android studio 升级HAXM后无法启动安卓模拟器
- 像素(px)与厘米的关系
热门文章
- 多人麻将源码 html5,新版大众麻将 H5版
- 天然气故障代码大全_美的、格力中央空调常见故障代码大全
- hdoj2044:一只小蜜蜂(递推)
- python 遗传算法 agv_遗传算法在AGV的路径规划中的应用
- XML转换为dataframe
- 翻译: 3.线性神经网络 概览 深入神经网络 pytorch
- 拉起客户端 Universal Links Scheme Open App iOS(Deep Link)
- 旋转图像 leetcode
- 计算广告、推荐系统常用语
- 641. 设计循环双端队列