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内部机制继续做探索,敬请关注!

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

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

  • 相关阅读:
    打开安装 好的Microsoft Dynamics CRM 4.0 报错误为 Caller does not have enough privilege to set CallerOriginToken to the specified value 的解决办法
    基于 Windows Server 2008 的计算机对 Microsoft Dynamics CRM 4.0 的支持
    Microsoft Dynamics CRM 4.0 如何添加自定义按钮
    Microsoft Dynamics CRM 4.0 Plugin 取值,赋值,查询
    C# 中的 enum(枚举) 类型使用例子
    vue事件的绑定
    表单验证2
    node中模块
    node模块的引入
    node中的读文件
  • 原文地址:https://www.cnblogs.com/xfuture/p/3799050.html
Copyright © 2011-2022 走看看