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


  • 相关阅读:
    oracle sql日期比较:
    vs 2008 过期问题
    silverlight带有复选框的列
    SQL 把一张表虚拟成两张表
    timeupdown
    ChildWindow 父窗体交互
    Debian CentOS修改时区
    如何优雅地使用命令行设置windows文件关联
    sql复制表结构,复制表内容语句
    VC6.0 中 添加/取消 块注释的Macro代码
  • 原文地址:https://www.cnblogs.com/daocaoren/p/2084037.html
Copyright © 2020-2023  润新知