zoukankan      html  css  js  c++  java
  • 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内部机制继续做探索,敬请关注!

      推荐:女友的“网页设计”之路

      如果觉得有帮助,右下角赞一下吧~ (* *)

  • 相关阅读:
    1108递归
    1108JS函数
    1107数组例子
    1106JS循环
    1106JS数组
    1104JS语法
    1104JS循环
    PDO概念 分析 练习
    Jquery网页元素里面的操作以及JSON
    Jquery事件
  • 原文地址:https://www.cnblogs.com/xfuture/p/3799050.html
Copyright © 2011-2022 走看看